Я пишу приложение Python, которое извлекает данные из учетной записи A и отправляет их в очередь SQS в учетной записи B. При выполнении лямбда-функции возвращается следующая ошибка:
"errorMessage": "Произошла ошибка (AccessDenied) при вызове операции SendMessage: доступ к ресурсу https://eu-central-1.queue.amazonaws.com/ запрещен.",
Если я использую очередь SQS в той же учетной записи, это работает.
Я использую Бессерверную платформу и Мне нужно использовать ExternalId в роли перекрестного аккаунта.
Что я сделал:
В учетной записи A (где выполняется функция Lambda)
Приведенная ниже функция была развернута с использованием бессерверной платформы:
TotalCollectorWeekToDate:
handler: environment.total_wtd_summary_handler
module: collectors
memorySize: 128
role: arn:aws:iam:::role/FunctionsLambdaRole
timeout: 30
events:
- schedule:
rate: cron(0 7 * * ? *)
enabled: true
environment:
COST_DATA_SQS_QUEUE_URL: https://sqs.eu-central-1.amazonaws.com/ ... yser-queue
Роль
Resources:
FunctionsLambdaRole:
Type: AWS::IAM::Role
Properties:
RoleName: FunctionsLambdaRole
AssumeRolePolicyDocument:
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action: "sts:AssumeRole"
Path: /
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole
Policies:
- PolicyName: logs
PolicyDocument:
Statement:
Effect: Allow
Action:
- "logs:CreateLogGroup"
- "logs:CreateLogStream"
- "logs:PutLogEvents"
Resource: "arn:aws:logs:*:*:*"
- PolicyName: lambda
PolicyDocument:
Statement:
Effect: Allow
Action:
- "lambda:InvokeFunction"
Resource: "*"
- PolicyName: VPCAccess
PolicyDocument:
Statement:
Effect: Allow
Action:
- "ec2:CreateNetworkInterface"
- "ec2:DescribeNetworkInterfaces"
- "ec2:DeleteNetworkInterface"
Resource: "*"
- PolicyName: CostExplorerAccess
PolicyDocument:
Statement:
Effect: Allow
Action:
- "ce:*"
Resource: "*"
- PolicyName: AssumeCostAnalyserDelegatedAccessRole
PolicyDocument:
Statement:
Effect: Allow
Action:
- "sts:AssumeRole"
Resource: "arn:aws:iam:::role/DelegatedAccessRole"
В учетной записи B (где находится очередь SQS)
Роль
Resources:
DelegatedAccessPolicy:
Type: 'AWS::IAM::ManagedPolicy'
Properties:
ManagedPolicyName: DelegatedAccessPolicy
Path: /
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- sqs:SendMessage
- sqs:GetQueueAttributes
- sqs:GetQueueUrl
- sqs:ListQueues
Resource: arn:aws:sqs:eu-central-1::prod-analyser-queue
DelegatedAccessRole:
Type: AWS::IAM::Role
DeletionPolicy: Delete
Properties:
RoleName: DelegatedAccessRole
Path: "/"
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
AWS: !Ref TrustedEntities
Action: sts:AssumeRole
Condition:
StringEquals:
sts:ExternalId: !Ref ExternalId
ManagedPolicyArns:
- { "Fn::GetAtt" : ["DelegatedAccessPolicy", "Arn"]}
SQS
DataPushQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: prod-analyser-queue
DelaySeconds: 5
MaximumMessageSize: 262144
MessageRetentionPeriod: 345600
VisibilityTimeout: 600
DataPushQueuePolicy:
Type: AWS::SQS::QueuePolicy
Properties:
PolicyDocument:
Statement:
- Effect: Allow
Principal:
AWS:
- arn:aws:iam:::role/DelegatedAccessRole
Action:
- sqs:SendMessage
- sqs:DeleteMessage
- sqs:GetQueueAttributes
- sqs:GetQueueUrl
- sqs:ListQueues
- sqs:ReceiveMessage
- sqs:SetQueueAttributes
Resource: { "Fn::GetAtt" : ["DataPushQueue", "Arn"]}
Queues:
- !Ref DataPushQueue
Подробнее здесь: https://stackoverflow.com/questions/622 ... -aws-accou
Как предоставить разрешение на отправку сообщений в очередь SQS в другой учетной записи AWS? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Очередь Laravel SQS не останавливается, даже если в очереди нет сообщений
Anonymous » » в форуме Php - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
MassTransit в AWS Lambda SQS не помещает сообщение в очередь ошибок на исключение
Anonymous » » в форуме C# - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как текущая очередь, очередь отправки и целевая очередь взаимодействуют друг с другом в GCD?
Anonymous » » в форуме IOS - 0 Ответы
- 103 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как добавить доступ к учетной записи Share Drive к учетной записи Google Service
Anonymous » » в форуме Python - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Получить ключ учетной записи хранилища вновь создания учетной записи хранения
Anonymous » » в форуме C# - 0 Ответы
- 32 Просмотры
-
Последнее сообщение Anonymous
-