LoginSignup
10
12

More than 5 years have passed since last update.

CircleCIからS3にアップロードするための設定

Posted at

About

CicleCIでbuildしたものをmasterにマージした際にS3の特定のバケットにアップロードしたかったので調べました。

AWSのIAM設定

不要な権限を渡したくなかったので、aws s3 cpで特定のバケット全体にアップロードする権限を絞りました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::sample*"
        }
    ]
}

今回の検証の範囲では"PutObject"だけで問題ありませんでした。ListObjectないとダメという噂も見かけたのですが、バケットを指定してやるぶんには問題ないみたいでした。

sampleの後の*がキモでこれがないとエラーになったので、要注意です。

CircleCIの設定

事前設定

CircleCIのProject settingsより、AWS Permissionsを選択肢、アクセス情報を設定します。

circle.yml

circle.yml
machine:
  timezone:
    Asia/Tokyo

dependencies:
  pre:
    - sudo pip install awscli
  post:
    - touch application-`date +"%Y-%m%d-%I-%M-%S"` && mv application-* $CIRCLE_ARTIFACTS

deployment:
  master:
    branch: master
    commands:
      - sh script/upload-s3.sh

dependenciesや`testの中で作成した成果物がある場合は、それを$CIRCLE_ARIFACTSにおくことで、deploymentタスクにてその成果物をアップロードすることができます。中身は適当です。

script/upload-s3.sh
#!/bin/bash

aws s3 cp $CIRCLE_ARTIFACTS/application* $S3_BUCKET/assets/

これを動かすとアップロードできました。

10
12
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
10
12