What's this~これは何~
こちらの記事で、S3 API callを行う際に、IAMユーザーを作成し、Access key,Secret keyを設定ファイルにベタ書きしていたのですが、やはりこれはセキュアとは言えないなと感じておりました。
冷静に考えてみたら、IAMロールでできないはずがないよな、となり、方法を探してみました。
今回は、IAMロールを使ってS3 API callを行いました。
前回との相違点
Access key,Secret keyをコメントアウトしています。
AmazonS3FullAccessをポリシーとして、IAMロールを作成し、EC2へアタッチしています。
auth_method: instanceを追加しています。
これでインスタンスプロファイルを見に行ってくれます。
/// Embulk設定ファイル編集
/// configファイル作成する。ディレクトリなども適当にconfigファイルを作成する。
/// yamlファイルは空白の数を間違えると、エラー吐くので注意。
vi embulk_mysql/config.yml
in:
type: mysql
user: "admin"
password: "パスワード"
database: "test_"
table: "item"
host: "RDSエンドポイント"
parser:
type: json
out:
type: s3
path_prefix: mysql/out(任意の名前を設定)
file_ext: .json
bucket: バケット名
endpoint: s3-ap-northeast-1.amazonaws.com(使用しているS3のリージョンに合わせる)
#access_key_id: アクセスキー
#secret_access_key: シークレットアクセスキー
formatter:
type: csv
auth_method: instance
総括
メモではありますが、どなたかの手助けになれば幸いです。
どこか変な点、誤まり等あればコメントでお知らせいただければ助かります。
参考
https://github.com/embulk/embulk-input-s3
https://dev.classmethod.jp/articles/do_you_know_iaminstanceprofile/
https://techblog.lclco.com/entry/2018/04/03/080000
参考にさせていただきました。ありがとうございます。