3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cloud9上のSAM CLIをアップグレードする

Last updated at Posted at 2022-03-26

概要

過去に作成したCloud9環境のSAM CLIのバージョンが古くなっており新しいバージョンに更新したい場合があります。当記事ではその手順について記載しています。
(といっても、手順自体は下記の公式情報に書いてある内容そのままです)

SAM CLIのアップグレード手順

任意のディレクトリ上にSAM CLIのzipファイルをダウンロードして"sam-installation"ディレクトリに解凍

wget https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip
unzip aws-sam-cli-linux-x86_64.zip -d sam-installation

アップデートコマンドの実行

sudo ./sam-installation/install --update

バージョン確認

sam --version

(バージョン確認の実行例)
cloud9_img.PNG

2022-03-22現在では1.41.0にアップグレードされました。

(Appendix-1)なぜこの記事を書こうと思ったか

以前作成したCloud9環境にて、下記のようなコマンドでnodejs14.xのランタイムのSAMテンプレートを作成しようとしたところ、nodejs14.xはサポートされていないというエラーになったのでアップデートしたいと思いました。

sam init --runtime nodejs14.x --name sample-nodejs

"pip install --upgrade aws-sam-cli"などと実行すればサクっと更新されてくれるだろと思いきや、期待通りに更新されてくれませんでした(エラーにはならないけど"sam --version"コマンドの結果が変わらなかった)。
"cloud9 sam cli upgrade"などでGoogle検索しても意外と前述のシンプルなアップデート手順に辿り着きづらかったので、久しぶりのQiita投稿ですし練習を兼ねて書いてみました。

(Appendix-2)そもそもCloud9とは

AWS Cloud9はブラウザ上で利用できる統合開発環境(IDE)のサービスで、AWSのサーバーレスアプリケーション開発などをすぐに開始できる環境を提供してくれます。

AWS CLI、SAM CLIやDockerなどが最初からインストールされており、ブレークポイントを設定したコードデバックも可能です。
ローカルに開発環境を用意する必要がないのでpythonやnodejsを利用してAWS Lambdaなどのスクリプトコードをちょっと書いてみたりしたい場合などに私は重宝しています。

Cloud9自体の利用料金は無料で、実行基盤とするEC2にかかる料金(インスタンス、EBSストレージなど)のみで利用できるので、環境作成時にt2.microのEC2インスタンスタイプを選択すれば、無料枠内で利用することも可能です。
私の個人的な感想では、pythonやnodejsを使ったLambdaの開発においてt2.microインスタンスタイプで不都合を感じたことはないです。

Cloud9環境上での各AWSリソースへのアクセス権限は"AWS Managed Temporary Credentials"という一時的な認証の仕組みで、Cloud9環境を作成した環境オーナーのIAMユーザーとほぼ同等の権限(IAM関連などの一部のオペレーションは制限されている)がデフォルトで利用できるようになっています。
通常、EC2インスンタンスに他サービスへのアクセス権限を設定する場合はIAMロールをインスタンスにアタッチしますが、Cloud9の環境として利用されるEC2インスタンスには、この仕組みによりロールをアタッチする必要がありません。

"AWS Managed Temporary Credentials"の利用は"Preferences > AWS Settings > Crecentials"の設定よりON/OFFを切り替えることができ、OFFにして自分でEC2インスタンスにアタッチしたIAMロールの権限で利用することも可能です。

cloud9_img2.PNG

Cloud9には一つの環境を複数ユーザーでShareして共同作業を行うことを可能にする機能があります。
しかし"AWS Managed Temporary Credentials"は前述の通り環境オーナーのIAMユーザーとほぼ同等の権限を行使できるので、たとえば管理者相当の権限を持つユーザーが作成した環境を、権限を限定された他のIAMユーザーにShareしてしまうと、共有された側が本来持っていない強力なアクセス権限をCloud9環境上では与えてしまいます。
環境をShareするのであれば相手は同じ権限を持ったIAMグループのメンバ間に限定する運用がよいかと思います。

※ 上記のような理由から、他メンバーにShareするときには下記のように警告メッセージを表示してくれます。
cloud9_share_alart2.PNG

(メインテーマよりAppendixの方が情報量が多くなってしまいました。。。)

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?