[英]AWS Lambda cross-account access denied
我有2個AWS賬戶。 帳戶1具有一個CloudSearch域,我需要從帳戶2的Lambda函數中進行查詢。我已經按照此處的教程在帳戶1中創建了一個角色,該角色允許跨帳戶訪問。
因此,在帳戶1中,我有一個角色arn:aws:iam::111111111111:role/my_cloudsearch_query_role
看起來像這樣:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "cloudsearch:search",
"Resource": "*"
}
]
}
該角色有一個受信任的實體,即帳戶2,我可以在IAM控制台的“受信任的實體”部分下看到該角色的正確帳戶ID。
在帳戶2中,我創建了一個Lambda函數,其執行角色如下所示:
{
"roleName": "my_cloudsearch_query_role",
"policies": [
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::111111111111:role/my_cloudsearch_query_role"
}
]
},
"name": "oneClick_lambda_basic_execution_1526469274620",
"type": "inline"
}
]
}
我的Lambda函數(Python 3)代碼嘗試像這樣查詢CloudSearch:
client = boto3.client('cloudsearchdomain', endpoint_url=endpoint)
response = client.search(
query="(and name:'foobar')",
queryParser='structured',
returnFields='curr_addr',
size=1
)
對Lambda函數的所有調用均失敗,並出現以下錯誤:
調用搜索操作時發生錯誤(AccessDenied):用戶:arn:aws:sts :: 222222222222:assumed-role / my_cloudsearch_query_role / my_lambda_func未經授權執行:cloudsearch:對資源的搜索:myCSmain
我很確定自己的帳戶ID正確無誤,因此不會混淆。 為了使它正常工作,我還需要做其他事情嗎?
您需要承擔帳戶111111111111中的角色,然后使用返回的憑據創建您的客戶端對象。 使用hypok_role boto3 API調用來獲取憑據。 這是一個示例代碼:
role_arn = "arn:aws:iam::111111111111:role/my_cloudsearch_query_role"
sts = boto3.client('sts', region_name="us-east-1")
token = sts.assume_role(RoleArn=role_arn, RoleSessionName="Session1")
credentials = token['Credentials']
access_key = credentials['AccessKeyId']
secret_key = credentials['SecretAccessKey']
token = credentials['SessionToken']
session = boto3.session.Session(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
aws_session_token=token
)
client = session.client('cloudsearchdomain', endpoint_url=endpoint)
response = client.search(...)
請使用正確的詳細信息更新role_arn。 有關Session對象的文檔可以在這里找到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.