amazon-web-services について
amazon-web-servicesは、AWSを扱う開発者やアーキテクト向けのクラウド開発スキルです。JavaScript SDK v3とAWS CDK v2を中心に、サービス利用、インフラストラクチャ・アズ・コード、セキュリティの実践を扱います。
主な機能
- 01AWS SDK for JavaScript v3のモジュール利用
- 02AWS CDK v2によるインフラストラクチャ・アズ・コード
- 03Lambda、S3、DynamoDBのパターン
- 04SQS、SNS、イベントメッセージング
- 05IAMの最小権限の実践
- 06CDKテンプレートのアサーションとスナップショットテスト
活用シーン
- 01サーバーレスアプリケーションの構築
- 02コンテナとマネージドデータベースのデプロイ
- 03イベント駆動システムの構築
- 04TypeScriptでのクラウドインフラ定義
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill amazon-web-servicesインストール後、Claude Code で/amazon-web-servicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/cdk-infrastructure.mdcontainers-ecs-fargate.mddynamodb.mdiam-security.mdlambda-functions.mdmessaging-sqs-sns.mdnetworking-cloudfront-route53.mds3-storage.md詳細
Amazon Web Services
概要
Amazon Web Services(AWS)は、スケーラブルなアプリケーションを構築するためのクラウドコンピューティングサービスを提供します。AWS SDK for JavaScript v3 はモジュール式パッケージ(@aws-sdk/client-*)を使用し、TypeScript を第一級でサポートします。AWS CDK v2 は、CloudFormation テンプレートに合成される TypeScript の構成要素を使って、インフラストラクチャをコードとして定義します。
使用する場面: クラウドネイティブアプリケーション、サーバーレスアーキテクチャ、コンテナのデプロイ、マネージドデータベース、CDN 配信、イベント駆動システム、またはインフラストラクチャをコードとして構築する場合。
使用しない場面: シンプルな静的サイト(Vercel/Netlify を検討してください)、ローカルでのみ使用する開発ツール、クラウドへのデプロイが不要なプロジェクト。
クイックリファレンス
| サービス/パターン | API/構成要素 | 主なポイント |
|---|---|---|
| S3 アップロード | PutObjectCommand | @aws-sdk/client-s3 からモジュールとしてインポート |
| S3 署名付き URL | getSignedUrl() | @aws-sdk/s3-request-presigner からインポート、最大 7 日間 |
| Lambda 関数 | new lambda.Function() | CDK L2 構成要素。memorySize と timeout を設定 |
| Lambda レイヤー | new lambda.LayerVersion() | 関数間でコード/依存関係を共有 |
| IAM ポリシー | new iam.PolicyStatement() | 常に最小権限を使用し、リソースに * を指定しない |
| DynamoDB テーブル | new dynamodb.Table() | シングルテーブル設計。負荷が変動する場合は PAY_PER_REQUEST を使用 |
| DynamoDB GSI | table.addGlobalSecondaryIndex() | スループットは個別に設定。結果整合性 |
| SQS キュー | new sqs.Queue() | 失敗メッセージには DLQ を使用し、WaitTimeSeconds でロングポーリングを設定 |
| SNS トピック | new sns.Topic() | SQS、Lambda、HTTP エンドポイントにファンアウト |
| CloudFront | new cloudfront.Distribution() | S3 オリジンには OAC を使用し、キャッシュポリシーを設定 |
| RDS/Aurora | new rds.DatabaseCluster() | 接続プーリングには RDS Proxy を使用 |
| ECS Fargate | new ecs_patterns.ApplicationLoadBalancedFargateService() | より高レベルのパターン構成要素 |
| Route 53 | new route53.ARecord() | AWS リソースにはエイリアスレコードを使用 |
| Secrets Manager | secretsmanager.Secret.fromSecretNameV2() | 自動ローテーションを設定し、シークレットをハードコードしない |
| CDK スタック | new cdk.Stack(app, 'Id') | デプロイ単位ごとに 1 つのスタックを作成 |
| CDK テスト | Template.fromStack(stack) | 詳細なアサーションとスナップショットテスト |
よくある間違い
| 間違い | 正しいパターン |
|---|---|
AWS SDK v2(aws-sdk)を使用する | バンドルサイズを小さくするため、モジュール式の v3(@aws-sdk/client-*)を使用する |
IAM の Action: "*" または Resource: "*" | アクションとリソース ARN を具体的に指定する |
| SQS キューに DLQ がない | 失敗したメッセージ用のデッドレターキューを必ず設定する |
| クエリに DynamoDB の scan を使用する | 先にアクセスパターンを設計し、GSI/LSI を使って Query を使用する |
| コードや環境変数にシークレットをハードコードする | Secrets Manager または SSM Parameter Store を使用する |
Lambda でツリーシェイキングをせずに node_modules をバンドルする | esbuild でバンドルする NodejsFunction を使用する |
ステートフルなリソースに RemovalPolicy を設定していない | 本番環境のデータベースとバケットには RemovalPolicy.RETAIN を設定する |
| CRUD 操作ごとに Lambda を作成する | 関連する操作をまとめ、イベントルーティングを使用する |
| RDS のコネクションプーリングがない | RDS Proxy を使用するか、Lambda ごとに max_connections を制限する |
| キャッシュポリシーを設定せずに CloudFront を使用する | TTL とヘッダーを制御するため、明示的な CachePolicy を定義する |
| CDK のテストにスナップショットのみを使用する | 詳細なアサーションとスナップショットテストを組み合わせる |
| コンテンツタイプを指定せずに署名付き URL を使用する | アップロード時に PutObjectCommand で ContentType を指定する |
委任
- インフラストラクチャのパターン:AWS アーキテクチャの調査には
Exploreエージェントを使用します - セキュリティレビュー:IAM ポリシーの監査には
Taskエージェントを使用します - コストの最適化:リソースの適正化には
Taskエージェントを使用します
dockerスキルが利用可能な場合は、コンテナのビルドパターンと Dockerfile の最適化を委任してください。github-actionsスキルが利用可能な場合は、AWS デプロイ向け CI/CD パイプラインのパターンを委任してください。typescript-patternsスキルが利用可能な場合は、CDK コードで使用する TypeScript の strict モードと型のパターンを委任してください。application-securityスキルが利用可能な場合は、AWS のセキュリティに関するベストプラクティスと脅威モデリングを委任してください。