修司(294)102102件のシェア(ちょっぴり話題の記事)この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。最近は、システムの開発支援としてAWS環境構築などに関わる事が多いです。そこで、開発者側視点で押さえておきたいAWSのノウハウや基礎知識を書いて展開してみたいと思います。今回はEC2で動くプログラムがアクセスキー/シークレットキーを使わずにRoleを利用すべき、という話です。Roleとは?RoleはIAMの機能のひとつで、アクセスキー/シークレットキーを使わずに各種AWSリソースにアクセスすることができます。EC2インスタンスからS3にオブジェクトを書き込んだり、SNSにメッセージを送信したりする場合に利用できます。アクセスキー/シークレットキーとの違いひとことで言えば、Roleはアクセスキー/シークレットキーに比べ、キーの管理をする必要がありません。EC2インスタンスにしか割り当てることしかできません。キー管理が不要アクセスキー/シークレットキーは、ペアで環境変数や設定ファイルに登録しておく必要があります。ある程度の期間でローテーションをすることが推奨されています。誤ってリポジトリにコミットしてしまったり、なんらかの理由でキーが漏洩してしまうとどこからでも操作できてしまうため、慎重に管理しなければなりません。できることならば管理したくないのが心情です。Roleを使えば、キーの管理は不要になります。EC2の立ち上げ時に割り当てるRoleはEC2の立ち上げ(Launch)時に指定します。言い換えると、ローカル環境などでは利用できません。ローカル環境などでAWS-SDKなどを利用する場合は、アクセスキー/シークレットキーが必要です。現在時点では、起動中のインスタンスや、停止しただけのインスタンスにRoleを再割当てできません。空のRoleを作成しておき、割当てだけはしておくと良いでしょう。簡単なサンプルを見ながら、Roleを利用してみましょう。Roleを作成するRoleを作成するのは簡単です。Roleボタンをクリックしてください。EC2を選択しましょう。セキュリティポリシーは細かく制御できますが、後からでも簡単に変更できます。Accessを選ぶとよいでしょう。このようにして、「ec2-user」や「default-ec2-role」といった名前のRoleを作成しておきましょう。roleを設定します。後は通常通りにEC2インスタンスを起動してください。Roleはこの立ち上げ時にしか設定できないので注意してください。Roleを適用したい場合は、停止後AMIを作成し、インスタンスを作り直す必要があります。CLIでSNSにメッセージを送ってみます。"8b30213d-6a0d-5216-9166-6dbdc6e54104"}このように適切なRoleがあれば、アクセスキー/シークレットキーの設定は不要です。アクセスキー/シークレットキーを利用する場合は、次のように定義ファイルまたは環境変数に定義しなければなりません。SDKをgemでインストールして利用します。--no-rdocサンプルコードは次のようになります。resultここでもアクセスキー/シークレットキーを利用していません。アクセスキー/シークレットキーを利用する場合は、次のようにAWS.Configで設定するか、またはSNSオブジェクトのコンストラクタに渡す必要があります。'SECRET_ACCESS_KEY'})ローカル開発環境での扱いプログラムをローカルの開発環境で作成し、動作確認をAWSで行うケースは多いと思います。そのような場合は、ローカル環境とAWS環境でプロファイルなどを切り替えると良いでしょう。RailsのENVや、JavaのDIなどの仕組みを使い、ローカル環境とAWS環境で設定を切り替えてください。まとめRoleを利用することで、アクセスキー/シークレットキーの管理から解放されます。ローテーションの手間もありません。EC2上のプログラムからAWSのサービスにアクセスする場合は、Roleを使いましょう。アクセスキーを明記する必要がないのかを参照ください。2,944,692札幌の猫大好きエンジニア。著書に「JUnit実践入門」。趣味はロードバイクやスノーボードなど。Developers.IOでは、ユニットテスト・AWS・Ansibleの話題などを書いています。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。濱田孝治421re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。泰雨122皆さん、こんにちは。コンサル部のテウです。2020年もあっという間に2ヶ月が経ちました。今年こそ機械学習に入門しようぜ!!って決心された方もいらっしゃると思います。入門できる方法をご紹介させて頂きたいと思います。本記事の手順通り、ランチタイム等の時間を活かして、手軽に入門してみてください。濱田孝治421re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。夏目祐樹414こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。臼田佳祐296ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介257SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。