GitLab-CIでAWSローカル環境を使ったテストを行う
Page content
AWS環境に接続する実装のテストを行う際、ローカルにAWS環境を再現する便利なツールがある。
これをGitLab-CIで使う際、services
のparameterで簡単にDocker環境を準備でき便利。
Localstackを使う
Localstackは、AWS各種サービスのモックフレームを提供するツールで、料金を気にせずテストや動作確認ができる。
CIでは、以下のDocker imageを利用。
-
my_aws_test: services: - localstack/localstack:0.12.8 variables: DYNAMODB_ENDPOINT: http:localstack-locakstack:4566 S3_ENDPOINT: http:localstack-locakstack:4566 script: - cd aws && pytest test ...
portは指定できず、imageのデフォルトを使う。
最近のバージョンだとサービスを問わずport 4566
で接続できそう。
DynamodDB Localを使う
DynamoDB Localは、Amazon DynamoDBのモックツール。
Localstacldと比べるとパフォーマンスも良さそうで、DynamoDBだけを使うならこちらを採用したいところ。
以下のDocker imageを利用。安心の公式提供。
-
my_dynamodb_test: services: - amazon/dynamodb-local:1.15.0 variables: DYNAMODB_ENDPOINT: http:amazon-dynamodb-local:8000 script: - aws dynamodb create-table --endpoint-url $DYNAMODB_ENDPOINT --table-name my-table ... - cd dynamodb && pytest test ...
portはデフォルト (8000
)を使う。
fake-s3を使う
fake-s3はS3のモックツール。
以下のDocker imageを利用。
-
my_s3_test: services: - lphoward/fake-s3:14.04 variables: S3_ENDPOINT: http:lphoward-fake-s3:4569 script: - aws s3 mb --endpoint-url $S3_ENDPOINT s3://my-bucket - cd s3 && pytest test ...
portはデフォルト (現状4569
)を使う。
なお、fake-s3に対してlist objectsの操作をする場合は注意点がある。