AWS ECRへのDockerイメージのプッシュ


次のようにします
  • リポジトリの作成
  • BecketからECRにDockerイメージを押してください
  • Bitbucketパイプラインの設定
  • リポジトリの作成


    1 : SSHキーを作成しました.
    ssh-keygen -t rsa -C [email protected]
    
    2 :パブバケットをBitbucketに加える.
    3 :リモートを設定しますが….パスワードが必要ですか?
    git remote add origin [email protected]:xxx/yyy.git
    git push origin master
    
    Password for 'https://[email protected]': 
    # ????
    
    4 :リモートURLを取得する
    git config --get remote.origin.url
    
    https://[email protected]/bbb/ccc.git
    
    5これはhttpsではありません.gitでなければなりません.
    git remote set-url origin [email protected]:xxxx/yyyy.git
    
    エラー.
    6 : sshキーの指定
    https://qiita.com/sonots/items/826b90b085f294f93acf

    BecketからECRにDockerイメージを押してください



    OIDCのIAM役割を作成しなければなりません.

    Bitbucketのアイデンティティプロバイダーを取得します。


    Bitbucketから情報を得ることができます.{Your repository settings} > Pipelines > OpenID Connect次を取得します.
  • アイデンティティプロバイダー
  • 観客
  • AWSアイアムセッティング.


    プロバイダーの作成

  • 移動するIAM > Identity providers > Add provider .
  • フィルインIdentity provider URL and Audience .
  • ポリシー作成


    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "GetAuthorizationToken",
                "Effect": "Allow",
                "Action": [
                    "ecr:GetAuthorizationToken"
                ],
                "Resource": "*"
            },
            {
                "Sid": "AllowPushImage",
                "Effect": "Allow",
                "Action": [
                    "ecr:BatchCheckLayerAvailability",
                    "ecr:InitiateLayerUpload",
                    "ecr:UploadLayerPart",
                    "ecr:CompleteLayerUpload",
                    "ecr:PutImage"
                ],
                "Resource": "arn:aws:ecr:ap-northeast-1:{AWS Account ID}:repository/*"
            }
        ]
    }
    

    クリエイトロール

  • 移動するIAM > Role > Create role .
  • 絹篩で篩うたようWeb identity .
  • 絹篩で篩うたようIdentity provider URL and Audience 前のステップによって作成されます.
  • 前の手順で作成したポリシーを選択します.
  • Bitbucketパイプラインの設定


    Official
    最小構成
    image: atlassian/default-image:2
    
    definitions:
      script: &ecrScript
        - docker build -t $REPO_NAME .
        - pipe: atlassian/aws-ecr-push-image:1.5.0
          variables:
            AWS_OIDC_ROLE_ARN: $OIDC_ROLE_ARN
            IMAGE_NAME: $IMAGE_NAME
            TAGS: "${BITBUCKET_TAG} build-$BITBUCKET_BUILD_NUMBER latest"
    
    pipelines:
      custom:
        build-custom:
          - step:
              name: Deploy to ECR
              services:
                - docker
              oidc: true
              script: *ecrScript
    
    ノートAWS_DEFAULT_REGION 変数として設定する必要があります.さもないとエラーが出るValueError: Invalid endpoint: https://api.ecr..amazonaws.com . 公式文書をチェックしてください.