лямбда принимает на себя роль пустых результатов

#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. К вашему сведению на будущее: общепринятым последующим действием было бы предупредить первого респондента, который предоставил вам правильный ответ (в данном случае Джона), и попросить этого человека предоставить ответ, который вы затем принимаете.