launching-ec2-instance-with-best-practices は何をしますか?
セキュアでコスト効率の高いデフォルト設定(AMI選択、バースト可能インスタンスサイジング、最小権限のIAMロール、強化されたセキュリティグループ、暗号化されたEBSボリューム、包括的なタグ付け)でEC2インスタンスを起動します。AWSのベストプラクティスに従った新しいEC2インスタンスのデプロイ時に使用してください。
使い方
以下のCLIコマンドを実行してEC2インスタンスを起動します。
# 例: Amazon Linux 2 AMIを使用したt3.mediumインスタンスの起動
aws ec2 run-instances \
--image-id ami-0c55b159cbfafe1f0 \
--instance-type t3.medium \
--key-name MyKeyPair \
--security-group-ids sg-xxxxxxxx \
--subnet-id subnet-xxxxxxxx \
--iam-instance-profile Name=MyLeastPrivilegeRole \
--block-device-mappings "DeviceName=/dev/xvda,Ebs={Encrypted=true,VolumeSize=20}" \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=MyInstance},{Key=Environment,Value=Production},{Key=CostCenter,Value=12345}]' \
--enable-api-termination
CloudFormationテンプレートの使用
より堅牢なデプロイには、以下のCloudFormationテンプレートを使用することをお勧めします。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
EC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-0c55b159cbfafe1f0
InstanceType: t3.medium
KeyName: MyKeyPair
SecurityGroupIds:
- !Ref EC2SecurityGroup
SubnetId: subnet-xxxxxxxx
IamInstanceProfile:
Name: MyLeastPrivilegeRole
BlockDeviceMappings:
- DeviceName: /dev/xvda
Ebs:
Encrypted: true
VolumeSize: 20
Tags:
- Key: Name
Value: MyInstance
- Key: Environment
Value: Production
ベストプラクティス
- AMI選択: 最新の安定したAMI(例: Amazon Linux 2)を選択し、不要なソフトウェアが含まれていないことを確認します。
- インスタンスサイジング: ワークロードに適したバースト可能インスタンス(t3、t4gなど)を使用し、コスト効率を最大化します。
- IAMロール: 最小権限の原則に基づいたIAMロールをインスタンスにアタッチします。
- セキュリティグループ: 必要なトラフィックのみを許可する厳格なルールを設定します。
- EBS暗号化: デフォルトでEBS暗号化を有効にし、データ保護を確保します。
- タグ付け: リソース管理とコスト配分のために一貫したタグ付けスキームを適用します。
- 削除保護: 誤った削除を防ぐために
enable-api-terminationを設定します。
入力パラメータ
| パラメータ | 説明 | デフォルト値 |
|---|---|---|
| image-id | 使用するAMI ID | 最新のAmazon Linux 2 AMI |
| instance-type | EC2インスタンスタイプ | t3.medium |
| key-name | SSHアクセス用のKey Pair名 | なし(必須) |
| security-group-ids | セキュリティグループIDのリスト | カスタムセキュリティグループ |
| subnet-id | インスタンスを起動するサブネット | デフォルトVPCのデフォルトサブネット |
| iam-instance-profile | アタッチするIAMロール名 | 最小権限ロール |
注意事項
- このスキルはAWS CLIまたはCloudFormationを使用してEC2インスタンスを起動します。適切なアクセス権限が必要です。
- コスト監視のために、インスタンスに適切なタグ(例: CostCenter)を設定することを強くお勧めします。
- 実稼働環境では、
enable-api-terminationを使用して誤った削除を防止してください。