AWSとは?ほとんどのPipelineがデプロイするクラウド
AWSはAmazon Web Servicesです: 自前のデータセンターを運用する代わりに、compute、storage、データベース、そして数百のマネージドサービスをレンタルする従量課金のクラウドです。
Amazon Web Servicesは最大のパブリッククラウドプロバイダーであり、生の仮想マシンから、完全マネージドのデータベース、キュー、機械学習APIまで、200を超えるサービスを提供します。チームは、オンデマンドでスケールし消費した分だけ支払えるようAWSを使います。ほとんどのソフトウェアチームにとって、AWSはCI/CD pipelineが最終的にコードを届ける場所でもあります。
AWSが実際に提供するもの
AWSはその提供物を広いカテゴリにグループ化します: compute (EC2、Lambda、ECS、EKS)、storage (S3、EBS)、networking (VPC、CloudFront、Route 53)、データベース (RDS、DynamoDB)、そして高レベルなマネージドサービスのロングテール。リソースはコンソール、AWS CLI、またはTerraformやCloudFormationのようなinfrastructure-as-codeツールでプロビジョニングします。
regionとavailability zone
AWSは数十の地理的regionで稼働し、それぞれが分離されたavailability zoneに分かれています。regionの選択はレイテンシ、データレジデンシー、価格に影響します。リソースは一般に1つのregionに存在するため、deploymentは設定で特定のregionをターゲットにします。
支払い方法
- 秒単位または時間単位で課金されるon-demand価格。
- 安定して予測可能なworkload向けのReservedおよびsavings plans。
- 中断可能な作業向けの割引されたspotキャパシティ。
- 安価に始めるための多くのサービスのfree-tier枠。
アイデンティティとアクセス
すべてのAWSリソースへのアクセスは、identity and access managementサービスであるIAMによってゲートされます。IAMのusers、roles、policiesが、誰または何がどのAPIを呼べるかを決めます。CI pipelineは、何かをデプロイできるようになる前にIAM principalとして認証します。
CI/CDでの役割
典型的なpipelineでは、CIがコードをbuildしてテストし、それからdeploy jobがアーティファクトをAWSにpushします: 静的サイトをS3とCloudFrontにアップロードする、コンテナイメージをECRにpushしてECS serviceを更新する、または関数をLambdaにデプロイする。GitHub Actionsから認証する最もクリーンな方法はOIDC roleで、長期のAWSキーをsecretsとして保存せずにworkflowがIAM roleをassumeできるようにします。
Latchkeyの位置づけ
LatchkeyはマネージドのGitHub Actions runnerをAWSで実行するので、あなたのCI computeとデプロイ先が同じネットワーク近隣を共有します。これにより、runnerからのregistry pull、S3アップロード、ECS rolloutが高速で低レイテンシに保たれます。
重要なポイント
- AWSは、compute、storage、networkingにわたる200以上のサービスを持つ従量課金のクラウドです。
- すべてのリソースはregionに存在し、IAMのパーミッションでゲートされます。
- pipelineは、理想的にはOIDC経由でIAM principalとして認証してAWSにデプロイします。