当前位置: 首页 > 知识库问答 >
问题:

无法使用我的SAM应用程序访问DynamoDB

景成和
2023-03-14

我试图从我的SAM应用程序本地连接到DynamoDB。我能够启动Dynamodb服务器,并能够通过我的python文件连接它,引用此https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Python.01.html

导入json导入boto3从boto3.dynamodb.conditions导入密钥从pprint导入pprint

从botocore.exceptions导入ClientError

def put_movie(标题、年份、情节、评级、dynamodb=None):如果不是dynamodb:dynamodb=boto3.resource('dynamodb',endpoint_url=”http://localhost:8000")

table = dynamodb.Table('Movies')
response = table.put_item(
   Item={
        'year': year,
        'title': title,
        'info': {
            'plot': plot,
            'rating': rating
        }
    }
)
return response

def fun1():movie_resp=put_movie(“大新片”,2015,“什么都没发生”,0)print(“put movie successed:”)pprint(movie_resp)

def lambda_处理程序(事件、上下文):“示例纯lambda函数

Parameters
----------
event: dict, required
    API Gateway Lambda Proxy Input Format

    Event doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format

context: object, required
    Lambda Context runtime methods and attributes

    Context doc: https://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html

Returns
------
API Gateway Lambda Proxy Output Format: dict

    Return doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html
"""

# try:
#     ip = requests.get("http://checkip.amazonaws.com/")
# except requests.RequestException as e:
#     # Send some context about this error to Lambda Logs
#     print(e)

#     raise e
fun1()

s1 = "Hello there"
return {
    "statusCode": 200,
    "body": json.dumps({
        #"message": "hello world",
        "message" : s1
        # "location": ip.text.replace("\n", "")
    }),
}

    }

我得到这个错误:在这里输入图像描述

这是我的YAML文件:在此处输入图像描述在此处输入图像描述

共有2个答案

闾丘正志
2023-03-14

如果已经创建了DynamoDB表并使其运行,则不需要使用put\u movie函数第3行中的endpoint参数。因此,该函数应如下所示:

import boto3

def put_movie(title, year, plot, rating, dynamodb = None):
    if not dynamodb:
        dynamodb = boto3.resource('dynamodb')
    
    table = dynamodb.Table('Movies')

    response = table.put_item(
        Item = {
            'year': year,
            'title': title,
            'info': {
                'plot': plot,
                'rating': rating
                }
            }
        )
    return response

参考文件:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/dynamodb.html#using-现有表格

相旭
2023-03-14

如果使用本地DynamoDB,则需要在创建资源时设置终结点URL。

dynamodb = boto3.resource('dynamodb', endpoint_url="http://localhost:8000")
 类似资料:
  • 我是kubernetes的新手,我尝试使用Kubernete运行小型应用程序。我创建了docker镜像并使用minikube运行它。所以应用程序非常简单,它只打印hello world。 我的dockerfile文件: deployment.yaml 我运行命令: 创建deployment.yaml 输出是: 服务/myhelloworldservice已创建 创建的部署.apps/我的问候世界

  • 我对servlets非常了解,但我应该部署一个运行在Tomcat服务器(仅本地主机)上的Eclipse web项目。整个过程在Windows上运行良好,但最近我不得不转到Ubuntu12.04,当我想访问应用程序时,我遇到了这个问题: 如果我先启动apache2和tomcat7 sudo netstat-lpn|grep: 80 看起来像这样: tcp 0.0.0.0:80 0.0.0.0:*听1

  • 我尝试使用本地主机url访问我的endpoint——http://localhost:8080/这是我的Application.java文件 这是我的终点 我试着用这个网址http://localhost:8080/all

  • 问题内容: 我正在开发一个应用程序和一个小部件,该小部件需要从应用程序获取数据。我使用以下代码在NSUserDefaults上进行读写。而且我还使用了小部件并引用了这篇文章。但是小部件无法从应用程序或NSUserDefaults获取数据。我该如何运作? /////// 问题答案: 要从同一组NSUserDefaults中读取和保存,需要执行以下操作: 在您的主应用程序中,在项目导航器中选择您的项目

  • 我正在使用SeleniumJavaJAR版本:3.4.0Appium,桌面版本:1.4.13.1Java客户端版本:5.0.0-BETA9 代码和所需的功能是: } 但当我运行它时,在eclipse控制台中出现了以下错误: 以下是appium的错误: 试图通过更改不同版本来解决,但无法解决。appium正在显示错误,但同时emulator正在显示已安装的应用程序。 有人有相同的问题吗?请提出解决方

  • 我有一个管理用户谷歌日历的web应用程序。最近,我在检索日历列表时遇到了一个“无效凭据”错误,并发现该用户帐户是一个g套件帐户(因为不同的域)。但是,我仍然可以获得访问令牌和刷新令牌。我还可以从帐户中获取开放ID信息。但无法访问日历。其他帐户以gmail结尾。com工作正常。 我是否错过了这些g套件用户的身份验证?