Эта ошибка возникает в AWS Lambda Function, когда я пытаюсь поместить_item () в DynamoDB.
c_table.put_item(Item={"id": result['conn_id'], "username": payload.get("username"), "created": datetime.utcnow().isoformat()})
WSConnectionTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: my_table_name
AttributeDefinitions:
- AttributeName: id
AttributeType: S
KeySchema:
- AttributeName: id
KeyType: HASH
BillingMode: PAY_PER_REQUEST
StreamSpecification:
StreamViewType: NEW_AND_OLD_IMAGES
ConnectFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub ${AWS::StackName}-ConnectFunction
Description: !Sub
- Stack ${StackTagName} Environment ${EnvironmentTagName} Function ${ResourceName}
- ResourceName: ConnectFunction
CodeUri: sources
Handler: handlers.connection
Runtime: python3.7
MemorySize: 3008
Timeout: 30
Tracing: Active
Policies:
- AWSXRayDaemonWriteAccess
- DynamoDBCrudPolicy:
TableName: !Ref WSConnectionTable
Environment:
Variables:
TABLE_NAME: !Ref WSConnectionTable
TABLE_ARN: !GetAtt WSConnectionTable.Arn
Все работает хорошо, ожидайте, что после подключения WS я хочу сохранить идентификатор подключения в БД, и вызов put_item () завершится с ошибкой ниже:
[ERROR] ClientError: An error occurred (AccessDeniedException) when calling the PutItem operation: User: arn:aws:sts::74xxxxxxx:assumed-role/websocket-dev-ConnectFunctionRole-1PCCYG1DTLQYW/websocket-dev-ConnectFunction is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-2:74xxxxxxx:table/my_table_name_dev
Буду признателен за любую подсказку, как это исправить
1 ответ
Ваша таблица DdB называется my_table_name
:
WSConnectionTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: my_table_name
И ваша Политика разрешает доступ только к этой таблице:
- DynamoDBCrudPolicy:
TableName: !Ref WSConnectionTable
Однако в сообщении об ошибке говорится, что вы пытаетесь получить доступ к другой таблице (называемой, my_table_name_dev
) и получаете отказ в доступе
Похожие вопросы
Новые вопросы
amazon-web-services
Amazon Web Services (AWS) — это облачный сервис, предлагающий решения IaaS (инфраструктура как услуга) и SaaS (программное обеспечение как услуга). Только вопросы по программированию применительно к AWS относятся к теме. Общую справку по серверу можно получить по адресу https://serverfault.com. Тег AWS редко используется сам по себе и обычно используется с другими тегами, чтобы более четко определить тему вопроса.