クロスアカウントで艶の粥安皆アカウントの皆3にファイルをアップロ`ドしたい

n-ozawan

峻さん、こんにちは。室宝蝕kグル`プの稼-看噛温敬温稼です。
竪のゴロゴロ咄には伉をKす森どころか、糠孵の嵶りを壼める森も豚棋されています。

云籾です。
児云議に1つの粥安皆アカウントで桟廠を更廏するものですが、嶄には鹸方の粥安皆アカウントで桟廠を更廏するケ`スもあるかと房います。書指はクロスアカウントで呟なる粥安皆アカウントの皆3にファイルをアップロ`ドすることがあったので、その圭隈を府初します。

クロスアカウントによる皆3アップロ`ド

はじめに

嶬據∨修vわっているプロジェクトでは更撹砿尖に赫庄岳晦温恢を旋喘しています。ソ`スコ`ドは赫庄岳晦温恢で砿尖され、遺鴛/遺禽によりコンテナイメ`ジを蝕k桟廠の掘遺檎へアップロ`ドします。匯圭で、譜柴慕v銭はvS宀畠埀と慌嗤するため、蝕k桟廠とは呟なる粥安皆アカウント(ドキュメント桟廠)の皆3にアップロ`ドする駅勣があります。

掘遺檎への永顎壊鞄にしても、皆3へのアップロ`ドにしても、それを佩うための鴛粥珂ユ`ザ`が駅勣になります。赫庄岳晦温恢の遺鴛/遺禽で旋喘できる鴛粥珂ユ`ザ`は1つだけです。つまり、蝕k桟廠の鴛粥珂ユ`ザ`で遺鴛/遺禽をg佩すれば、掘遺檎への永顎壊鞄は竃栖ますが、ドキュメント桟廠への慙泙ないため、皆3へのアップロ`ドは竃栖ないことになります。

ゴ`ル

この}を盾Qするために、クロスアカウントアクセスによるS3へのファイルアップロ`ドが竃栖るようにします。IAM STSから匯r議なJ^秤鵑鯣ゝ辰靴董△修燐J^秤鵑砲茲S3へファイルをアップロ`ドを佩うまでが云後のゴ`ルです。

皆3へアクセス竃栖るようにロ`ルを譜協する

まずは皆3へアップロ`ド辛嬬なポリシ`を協吶します。このポリシ`はドキュメント桟廠迦に恬撹します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::[鵑離丱吋奪斑]"
            ]
        }
    ]
}

肝に蝕k桟廠の鴛粥珂ユ`ザ`が哈き鞭けられるようにロ`ルを恬撹します。このロ`ルもドキュメント桟廠迦に恬撹します。また、このロ`ルに枠ほどのポリシ`をアタッチしてください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "[_kh廠のIAMユ`ザ`のARN]"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

Principal.AWSに蝕k桟廠の鴛粥珂ユ`ザ`の粥檎鰻を峺協することにより、ドキュメント桟廠は、蝕k桟廠の鴛粥珂ユ`ザ`にして皆3へのアクセス俯辛を嚥えられるようになります。

ドキュメント桟廠迦の譜協は參貧となります。

皆意皆を函誼して皆3にアップロ`ドする

蝕k桟廠の鴛粥珂ユ`ザ`は、參和のコマンドにより皆意皆から範^秤烏を誼ることが竃栖ます。

aws sts assume-role --role-arn [枠ほど恬撹したロ`ルのARN] --role-session-name [販吭の兆念]
{
    "Credentials": {
        "AccessKeyId": [アクセスキ`],
        "SecretAccessKey": [シ`クレットアクセスキ`],
        "SessionToken": [セッショント`クン],
        "Expiration": [嗤親斛]
    },
    "AssumedRoleUser": {
        "AssumedRoleId": xxx,
        "Arn": xxx
    }
}

貧芝のCredentials.AccessKeyIdCredentials.SecretAccessKeyCredentials.SessionTokenをそれぞれAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKENの桟廠篳に譜協することにより、蝕k桟廠の鴛粥珂ユ`ザ`で、ドキュメント桟廠の皆3にアクセスすることが竃栖るようになります。

參和はgitlab-ci.ymlの箭です。export ゛のところで、皆意皆からの範^秤烏函誼と桟廠篳への郡啌を佩っています。

  script:

    # STSからJ^秤鵑鯣ゝ辰靴董↓h廠篳に郡啌
    - >
      export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s"
      $(aws sts assume-role --role-arn [枠ほど恬撹したロ`ルのARN]
      --role-session-name [販吭の兆念]
      --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]'
      --output text))

    # S3にファイルをアップロ`ド
    - aws s3 cp dist s3://[鵑離丱吋奪斑]/ --recursive

おわりに

書指兜めてクロスアカウントアクセスをやってみて、わりと酒gな譜協で竃栖たので妾きました。ただ、皆意皆の碧怏みなどをちゃんと岑らないと、はまりそうな櫃します。

ではまた。


Recommendおすすめブログ