从AWS Lambda访问AWS DynamoDB时出错

时间:2018-03-22 13:57:45

标签: python amazon-web-services aws-lambda amazon-dynamodb boto3

我在lambda中跟踪boto3代码以通过STS凭证访问dynamo db表时收到错误。 代码在

之下
import boto3
def lambda_handler(event, context):
sts_client = boto3.client('sts')

# Call the assume_role method of the STSConnection object and pass the role
# ARN and a role session name.
assumedRoleObject = sts_client.assume_role(
    RoleArn="arn:aws:iam::012345678910:role/test_role",
    RoleSessionName="AssumeRoleSession1"
)

# From the response that contains the assumed role, get the temporary
# credentials that can be used to make subsequent API calls
credentials = assumedRoleObject['Credentials'] 


dynamoDB = boto3.resource('dynamodb',aws_access_key_id=credentials['AccessKeyId'],aws_secret_access_key=credentials['SecretAccessKey'],aws_session_token=credentials['SessionToken'],)
test1=dynamoDB.get_available_subresources

table = dynamoDB.Table('Test1')

response = table.get_item(
    Key={
            'Name': 'ABC'
        }
    )

错误堆栈跟踪如下:

ResourceNotFoundException: An error occurred (ResourceNotFoundException) when calling the GetItem operation: Requested resource not found

2 个答案:

答案 0 :(得分:1)

首先检查Table" Test1"存在

来自this文档:

  

<强> ResourceNotFoundException

     

消息:找不到请求的资源。

     

示例:请求的表不存在,或者也是如此   在CREATING状态的早期。

使用list-tables命令检查此表是否存在:

aws dynamodb list-tables

验证您的CLI默认区域是否与表格区域相同

如果此表存在,请检查您的cli configuration以验证您是否在该表所在的同一区域中查询。您可以像这样检查默认区域:

aws configure get region

您可以使用aws configure更改默认设置,或直接在任何CLI命令中指定--region以覆盖默认区域。

答案 1 :(得分:0)

我经常得到这个错误通常是由于表格不存在。

检查:

  1. 表存在且拼写正确
  2. 您正在访问表中存在的正确的DynamoDB实例
  3. 您正在使用的角色可以访问该表