ラベル AWS for fargate の投稿を表示しています。 すべての投稿を表示
ラベル AWS for fargate の投稿を表示しています。 すべての投稿を表示

2024年3月31日日曜日

Fargate(コンテナのログイン方法について)

Fargateで稼働しているコンテナは、SSMサービスを利用して

ログインすることができる。

ハマってしまったので、備忘録を記載。




ECSのタスクロール用のポリシーを作成:













新たにロールを作成:

①ユースケースの検索窓に「Elastic Container Service」を入力後、「Elastic Container Service Task」を選択

②許可ポリシーに上記で作ったポリシーを指定する



タスク定義の更新を行う:

以下のタスクロールの追加を忘れずに!!














作成済みのサービスの停止 > サービスの再作成を行う

  ->これを行わないと以下のエラーになるので、注意!!




🔸SSMのインストール:

インストール手順①

curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"


インストール手順②

unzip sessionmanager-bundle.zip


インストール手順③

sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin


重要:

cloudshellの場合、再起動を行うこと!!(コマンドが有効化されないようなので)


以下、実施する;

session-manager-plugin


注意:

タイミングで、以下のエラーが出てしまいハマることがあった(Cloud Shellの場合)

     ->何回か、CloudShellの再起動したり、ECSサービスの再起動など(新しいデプロイの強制などの操作を含め)

   を行いやっと改善したりでハマりやすい!

-bash: /usr/local/bin/session-manager-plugin: cannot execute binary file: Exec format error





ECSExecを有効化:

aws ecs update-service --region ap-northeast-1 --cluster クラスタ名 --service サービス名 --enable-execute-command




以下、サービスの更新を行う(多分。実施した方がよい手順)













以下、新しいデプロイの強制にする(多分。実施した方がよい手順)




コンテナにログインする:

aws ecs execute-command --cluster クラスタ名 --container コンテナ名 --task タスクID --command "/bin/sh" --interactive




以下、コンテナにログインした様子(2)







2022年7月24日日曜日

Firelens 複数にログ転送

参照先:
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ecs-container-log-destinations-fargate/


firehoseとCloudWatchに同時にアプリケーションログを転送させたい場合は
fluent-bitのdockerイメージ作成を行う必要がある。



手順:

1)logDestinations.conf という設定ファイルの作成



























2)以下のDockerfileの記載を行う


=====Dockerfile==================

FROM amazon/aws-for-fluent-bit:latest

ADD logDestinations.conf /logDestinations.conf




3)上記に関連した、タスク定義の設定を行う。




2022年3月9日水曜日

ECS(Fargate)をベースにした、CICDの構成をterraformにしてみる。

以下、簡単なアークテクトについての特徴になる。


特徴:
1.GitHub上に、コードをpushすると自動的にCodePipeline経由でECS(Faragate)のデプロイを行う。
2.デプロイ方法については、BlueGreenデプロイにする。
3.ログについては、sidecar container経由でkinesis firehouseをブリッジしてS3のバケットに
保管する仕組みにする。
4.コンテナについては、auto scalingが可能にしている。



2021年3月31日水曜日

Lambda(Fargate自動起動・停止)

 1)関数の作成を選択





2)以下、設定。

関数名:

ランタイム:Python 3.xを選択


3)関数の作成を押す







IAMにて、ポリシーの作成を行う


















==========サンプルコード:==================

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Effect": "Allow",

            "Action": [

                "ecs:DescribeServices",

                "ecs:UpdateService"

            ],

            "Resource": [

                "*"

            ]

        },

        {

            "Effect": "Allow",

            "Action": [

                "logs:CreateLogGroup",

                "logs:CreateLogStream",

                "logs:PutLogEvents"

            ],

            "Resource": "arn:aws:logs:*:*:*"

        }

    ]

}

=========================================



IAMロールを作成 















上記で、作成したポリシーを割り当てる。

















設定を選択















設定 ->アクセス権限 ->編集を押す。














既存ロール:上記で、作成したIAMロールを選択




















以下のようにコードを作成する。











============サンプルコード===============================

import boto3


from botocore.exceptions import ClientError

def lambda_handler(event, context):

    try:

        client = boto3.client('ecs')

        for cluster_name, service_name in [('test-cluster', 'test-service')]:

            service_update_result = client.update_service(

                cluster = cluster_name,

                service = service_name,

                desiredCount = 0 # コンテナの数

            )

            print(service_update_result)

    except ClientError as e:

        print("exceptin: %s" % e)

=======================================================


deploy ->Testを実施する。














【AI×GitOps】Docker Composeから始めるRaspberry Pi 5 Kubernetesクラスタへの自動デプロイ設計

現在構築を進めている動画管理システム開発において、いきなりKubernetes(K8s)に展開するのではなく、 Docker Composeを中間地点に挟んで段階的にK8s+Argo CD(GitOps)へ移行するアーキテクチャ設計 をまとめました。 Bionic(AIアシスタン...