#amazon-web-services #amazon-ec2 #aws-lambda #assume-role
#amazon-web-services #amazon-ec2 #aws-lambda #предположение-роль
Вопрос:
Я пытаюсь получить экземпляры EC2 из учетной записи B, используя Lambda в учетной записи A. Не уверен, чего мне не хватает.
Учетная запись A: выполняется лямбда-код. Учетная запись B: запущены экземпляры EC2. ниже Assume Role печатает ключ доступа и идентификатор токена сеанса, но не возвращает никаких результатов.
К роли IAM в учетной записи B прикреплена политика доступа amazonec2readonly, а доверительные отношения имеют arn:aws:iam::ACCOUNT_A:role/role-name_ACCOUNT_A
Это код:
import json
import boto3
from collections import OrderedDict
from pprint import pprint
import time
from time import sleep
from datetime import date
import datetime
def lambda_handler(event, context):
# Assume Role To connect to other Account
sts_connection = boto3.client('sts')
acct_b = sts_connection.assume_role(
RoleArn="arn:aws:iam::ACCOUNT_B:role/role_name_account_B",
RoleSessionName="cross_acct_lambda"
)
ACCESS_KEY = acct_b['Credentials']['AccessKeyId']
SECRET_KEY = acct_b['Credentials']['SecretAccessKey']
SESSION_TOKEN = acct_b['Credentials']['SessionToken']
# create service client using the assumed role credentials, e.g. S3
ec2 = boto3.client(
"ec2",
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN,
)
status = ec2.describe_instance_status()
pprint(status)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
Результат:
Response:
{
"statusCode": 200,
"body": ""Hello from Lambda!""
}
Результат:
Response:
{
"statusCode": 200,
"body": ""Hello from Lambda!""
}
Request ID:
"ZZZZZZZZZZZZZZZZZZZZ"
Журналы функций:
START RequestId: ZZZZZZZZZZZZZZZZZZ Version: $LATEST
{'InstanceStatuses': [],
Спасибо.
Комментарии:
1.
{'InstanceStatuses': [],
Строка взята изdescribe_instance_status()
, поэтому, похоже, она работает правильно. Если вы считаете, что пустой результирующий набор неверен, то, возможно, он подключался не к тому региону?2. Неправильный регион? Учетные данные для неправильной учетной записи? Попробуйте использовать awscli:
aws ec2 describe-instance-status
с этими учетными данными.3. Спасибо Джону Ротенштейну, регион был проблемой, как только я установил регион, результаты стали видны. Спасибо, что дали мне направление.
Ответ №1:
Как только я добавил регион, я смог увидеть результаты, спасибо Джону Ротенштейну и Джармоду за ваши рекомендации.
Комментарии:
1. К вашему сведению на будущее: общепринятым последующим действием было бы предупредить первого респондента, который предоставил вам правильный ответ (в данном случае Джона), и попросить этого человека предоставить ответ, который вы затем принимаете.