Lightsailで作ったインスタンスからS3にファイル転送したい。
EC2やLambdaみたいにロールの追加ができないのでユーザの追加から行います。
まずAWSコンソールからS3にアクセスできるプログラム用IAMユーザを追加。
IDとパスワードをメモっておきます。
続いてLightsailでインストールと設定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
##AWSコマンドのインストール curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" sudo python get-pip.py sudo pip install awscli ##ユーザ認証 $ aws configure AWS Access Key ID [None]: XXXXXXXXXXXXX AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXX Default region name [None]: ap-northeast-1 Default output format [None]: json ##S3コピー aws s3 cp xx.json s3://バケット名/パス/xx.json |
これで前回インストールしたスクレイピングツールを使って得た情報をS3にあげることができます。
もちろん DB のポリシーを追加してそっちで管理してもいいと思います。
これでひとまず EC2 でやってたことが全部 Lightsail で出来ました。
追記
Jenkinsで自動実行したところエラーが起きました。
upload failed: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
–debug オプションを付けても s3transfer.tasks - DEBUG - Exception raised.
ぐらいしか分からなかった。
結論として aws configure コマンドは現在ユーザの認証情報なのでJenkinsユーザは未認証でした。ログインしなおして再設定。
1 2 3 4 |
$ sudo su - jenkins $ aws configure ... $ exit |
これでJenkinsからも操作可能。