知識0な人がAWS ECSを初めて触った時に転びまくったのでメモ

こちらの動画を参考にさせていただきながら、人生初のECSを触ってみることに。
解説がめっちゃわかりやすく、知識0の私でもスルッと第一歩を踏み出すことができました!


若干動画と現在でAWSコンソールのUIが変わっているものの、
順調に動画通り進めていくことができました。

が、AWSのECRを設定するところでめちゃくちゃ詰まったのでメモしておきます

やりたいこと


今からやりたいことはこんな感じです。

  1. AWS ECRにリポジトリを作成
  2. ローカル環境にあるdocker imageをAWS ECRにプッシュ
    →AWSが親切にコマンドを用意してくれている

上記の1は完了したので、2を実行したいです。
ここでめちゃくちゃ詰まったので、ここに内容と解決策をメモしておきます😢

しなければいけないこと(まとめ)

  1. AWS CLIをインストールする
  2. IAMユーザーを作成する
  3. aws configreを設定する

動画通りに進めていたところ出たエラー

エラー内容も一応メモしておきます。
AWSが用意してくれているプッシュコマンドを流したところ、エラーが。

// このコマンドはサンプルです。動画を参考に、ご自身のプッシュコマンドを使用してください。

aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
// エラー内容

Command 'aws' not found, but can be installed with:

sudo apt install awscli

Error: Cannot perform an interactive login from a non TTY device

deepl翻訳:コマンド ‘aws’ が見つかりませんが、インストール可能です:sudo apt install awscli

deepl翻訳:TTY 以外のデバイスから対話式ログインを実行できない

ここでは2つのことが言われていますが、
はじめに「AWS CLIをインストールしてね」と言われているので、
言われた通りAWS CLIをインストールします。

(”TTY 以外のデバイスから対話式ログインを実行できない”
の意味がよくわからないので、調べておきます…)

1.AWS CLIをインストールする

インストールの方法は公式に書いてあります👇
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

コマンドを3回流すだけ。超簡単3ステップです。

STEP1:必要なファイルを取得する

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

curlコマンドとは
👻サーバーとデータを送受信するコマンド

-oオプションとは
👻取得したデータを-oの後で指定したファイルに保存する。

つまり上記のコマンドを流すことにより、

  • ”https://~.zip”からデータを取ってきて
  • awscliv2.zipという名前でローカルに保存する

ことができます。

STEP2:解凍する

unzip awscliv2.zip

※unzipする前に※

ここで私は詰まりました…。
原因はLinuxについての知識が少なかったためです。
(私はubuntuを使用しています)

さらっと出てきたので気付かなかったのですが、
Linuxでは既定でunzipコマンドがインストールされていない可能性があります。

// unzipコマンドを流しても、こんな感じで怒られます

Command 'unzip' not found, but can be installed with:

sudo apt install unzip

なので、unzipコマンドを別途インストールする必要があります。

sudo apt-get install zip unzip

参考:https://hydrocul.github.io/wiki/commands/zip.html

unzipコマンドをインストールしたら、冒頭のコマンドを流して
zipファイルを解凍しましょう!

STEP3:ついにインストール

sudo ./aws/install

管理者権限で先ほど解凍したzipの中にあるinstallファイルを実行することにより、
自動的にAWS CLIがインストールされます。

// 実行結果

You can now run: /usr/local/bin/aws --version

きちんとインストールできたか確認してみましょう!

aws --version

// 実行結果(成功!)
aws-cli/2.8.9 Python/3.9.11 Linux/5.10.102.1-microsoft-standard-WSL2 exe/x86_64.ubuntu.20 prompt/off

2.IAMユーザーを設定する

AWS CLIをインストールするだけではプッシュコマンドを流すことができません。
下記のようなエラーが出ます。

Unable to locate credentials. You can configure credentials by running "aws configure".
Error: Cannot perform an interactive login from a non TTY device

deepl翻訳:クレデンシャルを見つけられません。aws configureを実行することで、クレデンシャルを設定することができます

(最後に先ほどと同じエラーが出てますね→TTY 以外のデバイスから対話式ログインを実行できない)

というわけで、aws configreを設定する必要があります。
aws configreを設定するには、IAMユーザーの作成が必要です。
作成しましょう!😎

IAMユーザーってなに?

AWSのユーザーには、「ルート」と「IAM」の2種類があります。

👑ルート→なんでもできる!全ての権利を私は有しているのだ!ワハハなユーザー

🙇IAM→特定の権限を与えられたユーザー。(ID・パスワードが付与される)

Identity and Access Management = アイデンティティとアクセス管理

全ての人に、全てのアクセス・操作の権限を与えるのは危険です。
また、一つのアカウントをみんなで共有して使用するのも良くありません。
セキュリティ的にも危険ですし、仕事をする上でも不便です。

そこで「IAMユーザー」を作成することで、それぞれにIDとパスワードを付与し
ユーザーごとに権限を制限することができます。

IAMユーザーを作成する

こちらの記事を参考に作成しました。
スクショ満載で、とてもわかりやすかったです!!

普段使いのIAMユーザーを作る - AWSをはじめからていねいに

参考記事内でも書かれていますが、

  • サインインのURL
  • ユーザー名
  • アクセスキーID
  • シークレットアクセスキー
  • パスワード

必ずメモしておきましょう

作成できたらIAMユーザーでログインし直しましょう。

aws configureを設定する

aws configureの現状を確認する

念のため、下記のコマンドを流して
認証情報が設定されていないことを確認しましょう

aws configure list
// 実行結果。認証情報が設定されていないので、このような結果に。

      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key                <not set>             None    None
secret_key                <not set>             None    None
    region                <not set>             None    None

参考:https://aws.amazon.com/jp/premiumsupport/knowledge-center/s3-locate-credentials-error/

aws configureの設定方法

こちらの記事を参考に、認証情報を設定します。

AWS CLI を設定する - AWS Command Line Interface
AWS Command Line Interface (AWS CLI) を設定し、AWS とやり取りするための設定を指定します。

先ほどメモした、アカウント情報をひとつづつ入力します。

設定の例(公式サイトより)

Default output formatは例の通り、jsonで大丈夫だと思います。

これでよし!!長い道のりでした😭

ローカルにあったdockerImageをECRにプッシュできた

動画に戻って、ネットワーク周りの設定を行いましょう。

それでは!

コメント

タイトルとURLをコピーしました