1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【AWS】Lambdaで別アカウントのリソースにアクセスする

Posted at

##目的

  • 何回かやって調べながらやったためメモ的に
  • lambdaで別アカウントの各リソースにアクセスしたい
    Untitled Diagram (1).png

##準備するもの

  • アカウントA
    • Lambda用IAM Role
    • Lambda関数
  • アカウントB
    • assume role用 IAM Role

作成

###アカウントB

Role

ポリシーはアクセスしたいリソースによって変える

信頼関係を以下のように編集する

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::アカウントAのアカウント番号:role/LambdaのRole名"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

アカウントA

policy

以下ポリシーを付けたRoleを作成

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::アカウントBのアカウント番号:role/アカウントBで作成したRole名"
    }
}

Lambda関数

import boto3

def lambda_handler(context, event):

    sts_connection = boto3.client('sts')
    acct_b = sts_connection.assume_role(
        RoleArn="arn:aws:iam::アカウントBのアカウント番号:role/アカウントBで作成したRole名",
        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
    client = boto3.client(
        's3',
        aws_access_key_id=ACCESS_KEY,
        aws_secret_access_key=SECRET_KEY,
        aws_session_token=SESSION_TOKEN,
    )

    return "Hello from Lambda"

これでアカウントBにアクセスできるLambdaが完成
複数環境にアクセスしたい場合はCloudFormationとかでアカウントにIAMRole配ればできるようになるので
今後はここら辺を簡単に実装できる方法を考えたい、、、

###参考
https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-function-assume-iam-role/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?