我在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
答案 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)
我经常得到这个错误通常是由于表格不存在。
检查: