クレデンシャルファイルを使用してAWSのAPIを叩くようRubyのコードを書き換え

投稿者: | 2017年2月3日

AWSのAPIにアクセスするRubyのスクリプトの改善です。
これまでクレデンシャルの情報をハードコーディングしていたものをファイルを使用するように書き換えます。
ちなみにSDKは「AWS SDK for Ruby V2」になります。
下記のスクリプトはS3バケット内のファイルを全て削除するスクリプトです。
スクリプトの最初の方にクレデンシャルの情報を記述しています。

require 'aws-sdk-core'
require 'awesome_print'
Aws.config = {
  :access_key_id => 'XXXXXXXXXXXXXXXXXXXX',
  :secret_access_key => 'XXXXXXXXXXXXXXXXXXXX',
  :region => 'ap-northeast-1'
}
s3 = Aws::S3::Client.new
pager = s3.list_objects(bucket: "バケット名",
                        prefix: "",
                        max_keys: 100)
while true do
  objects = pager.contents.map(&:key).map{|key| {key: key}}
    resp = s3.delete_objects(bucket: "バケット名",
                             delete: {
                                 objects: objects
                             })
  break if pager.last_page?
  pager = pager.next_page
end

下記のスクリプトはクレデンシャルファイルを使用するよう書き換えたものです。
「Aws.config」の箇所を変更しただけです。
なお、test-userというクレデンシャルを使用しています。

require 'aws-sdk-core'
require 'awesome_print'
Aws.config = {
  :profile => 'test-user',
  :region => 'ap-northeast-1'
}
s3 = Aws::S3::Client.new
pager = s3.list_objects(bucket: "バケット名",
                        prefix: "",
                        max_keys: 100)
while true do
  objects = pager.contents.map(&:key).map{|key| {key: key}}
    resp = s3.delete_objects(bucket: "バケット名",
                             delete: {
                                 objects: objects
                             })
  break if pager.last_page?
  pager = pager.next_page
end

クレデンシャルファイルは下記のように記述します。

[test-user]
aws_access_key_id=XXXXXXXXXXXXXXXXXX
aws_secret_access_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXX

クレデンシャルファイルはユーザーディレクトリに「.aws」のディレクトリ作成し中に配置します。
■Windows
C:\Users\ウインドウズのログインユーザー名\.aws\credentials
■Linux
~/.aws/credentials
今回、一時的にローカルで使用していたスクリプトをCIに組み込むことにしたためクレデンシャル情報を外だしにする必要が出てきました。
アクセスキーをあちこちに記述したり、Gitのリポジトリに登録するのは危険なので極力クレデンシャルファイルを使用しましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA