本記事の要約
-
AWS CLIを使う際にプロファイルを使い分けることでAmazon S3およびONTAP S3の操作が可能
-
Amazon S3の操作時は、AWS IAM Roles Anywhereで取得したクレデンシャル情報を利用
-
ONATP S3の操作時は、NetApp ONTAPから払い出したクレデンシャル情報を利用
そもそもONTAP S3とは
-
ONTAP S3とはONTAP 9.8から正式リリースされたオブジェクトストレージ機能です。(ONTAP 9.7の段階でTech Previewとして利用可能)
-
ONTAP S3で払い出したS3 Bucketに対しS3クライアントアプリケーションによるオブジェクトの格納などの操作が可能です。また、ONTAPが提供するデータ階層化機能“FabricPool”のCold Data階層化先として利用することも可能です。
https://docs.netapp.com/ja-jp/ontap/object-storage-management/index.html -
S3クライアントアプリケーションに対応しているということなので、今回はAWS CLIを使って操作してみます。
やってみた
-
IAM Roles Anywhereが設定済みの環境を利用します。
IAM Roles Anywhereの設定方法については、以下ブログをご参照ください。
https://qiita.com/Yoshinori_Tsukioka/items/22b9f704f4bcd31621cf -
AWS CLIをインストールし、Amazon S3とONTAP S3の操作が可能であることを確認します。
この際にAmazon S3操作時はIAM Roles Anywhereで取得したクレデンシャル情報を使い、
ONTAP S3操作時はONTAPから払い出したクレデンシャル情報を利用しますので、
AWS CLIのConfig設定を少し工夫します。
AWS CLIのインストール
-
AWS公式サイトを参考にAWS CLIをローカル環境にインストールします。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html -
AWS CLIが正常にインストールされたことを確認します。
$ aws --version
aws-cli/2.13.11 Python/3.11.4 Linux/4.18.0-348.7.1.el8_5.x86_64 exe/x86_64.centos.8 prompt/off
- 続いて、IAM Roles Anywhereでクレデンシャル情報を取得できる設定を投入します。
参考となるAWS公式情報は、以下になります。
https://aws.amazon.com/jp/blogs/news/extend-aws-iam-roles-to-workloads-outside-of-aws-with-iam-roles-anywhere/
~/.aws/configを設定
[default]
credential_process = ./aws_signing_helper credential-process
--certificate ./cert.pem
--private-key ./private-key.pem
--trust-anchor-arn “トラストアンカーのARN”
--profile-arn “信頼プロファイルのARN”
--role-arn “IAM RoleのARN”
Amazon S3の操作
- Amazon S3のバケット内に格納したデータを確認します。
$ aws s3 ls testbucket001 --recursive
2023-07-10 16:37:48 0 test/
2023-07-10 17:18:25 1073741824 test/test.file
2023-07-10 17:24:15 1073741824 test/test_2.file
正常に動作したようです。
- 続いて、Amazon S3からローカルにデータをダウンロードしておきます。
$ aws s3 cp s3://testbucket001/ /opt/jupyter/test --recursive
download: s3://testbucket001/test/test_2.file to ../test/test/test_2.file
download: s3://testbucket001/test/test.file to ../test/test/test.file
- ダウンロードしたデータを確認します。
$ ls
test.file test_2.file
以上でIAM Roles Anywhere経由で取得したクレデンシャル情報をもとにAmazon S3の操作が可能であることが確認できました。
ONTAP S3の操作
- ONTAP S3を操作するためのクレデンシャル情報を~/.aws/configに設定します。
~/.aws/configを設定
[services ontaps3]
s3 =
endpoint_url = https://10.128.223.171/ #ONTAP S3のURL
[profile netapp]
aws_access_key_id = “ONTAP S3接続ユーザーのアクセスキー”
aws_secret_access_key = “ONTAP S3接続ユーザーのシークレットキー”
services = ontaps3
servicesセクションでs3コマンドを実行時のエンドポイントを指定しています。
今回はONTAP S3のURLを指定し、更にプロファイル“netapp”で実行した際に、servicesセクションで宣言されたエンドポイントを使うといった具合です。
servicesセクションの定義については、公式マニュアルをご参照ください。
https://docs.aws.amazon.com/sdkref/latest/guide/feature-ss-endpoints.html
- ONATP S3内のバケットを検索してみます。
$ aws s3 ls --profile netapp
2023-08-29 12:55:31 test
テスト用に準備していたバケットが確認できました。
これで、aws s3コマンド実行時の--profileオプションでAmazon S3を使うか、
ONTAP S3を使うかの使い分けができる環境が整いました。
--profileオプション追加することで、~/.aws/config内の[profile netapp]を参照してコマンドが実行されます。
つまり、今回の場合は以下の使い分けが可能になります。
--profileオプションの指定なし:Amazon S3への接続
--profile netappの指定:ONATP S3への接続
- 最後に先ほどAmazon S3からローカルにダウンロードしたデータをONATP S3にアップロードしてみます。
aws s3 cp --profile netapp /opt/jupyter/test/test/ s3://test --recursive
upload: ../test/test/test.file to s3://test/test.file
upload: ../test/test/test_2.file to s3://test/test_2.file
$ aws s3 ls --profile netapp test/
2023-09-01 15:49:51 1073741824 test.file
2023-09-01 15:49:59 1073741824 test_2.file
無事に完了しました。
まとめ
今回は、AWS CLIを使ったAmazon S3とONTAP S3の操作を検証してみました。
プロファイルを使い分けることで、AWS CLIを使ったAmazon S3とONTAP S3間のデータ受け渡しが可能であるという内容をお届けできたかと思います。
この記事が少しでも参考になれば、幸いです。