①Lambda作成
②コードにログ記録機能を追記
③test実行
④日本語を英語に翻訳する Lambda Function を作成
⑤IAMロールで許可ポリシーを付加
⑥「おはようございます」が英語に翻訳されるか確認
⑦英語に翻訳されていることを確認
以上
①Lambda作成
②コードにログ記録機能を追記
③test実行
④日本語を英語に翻訳する Lambda Function を作成
⑤IAMロールで許可ポリシーを付加
⑥「おはようございます」が英語に翻訳されるか確認
⑦英語に翻訳されていることを確認
以上
①ECRのリポジトリを作成
②docker build を実行する
③docker push で ECR に作成したコンテナイメージをアップロード
④マネージメントコンソールの画面を確認すると、ECR にイメージがアップロードされている
①Dockerfileの作成
FROM ubuntu:18.04
# Install dependencies
RUN apt-get update && \
apt-get -y install apache2
# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html
# Configure apache
RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \
echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \
chmod 755 /root/run_apache.sh
EXPOSE 80
CMD /root/run_apache.sh
②docker build でコンテナイメージ作成
③作成されたことを確認するために、DockerImage の一覧を確認
④Cloud9 の環境で、コンテナを動かす
-p : Cloud9 の Linux 環境の 8080 ポートを、コンテナ側の 80 番ポートと接続する指定。これによって、Cloud9 の画面上から、動かしているコンテナにアクセスするのが簡単になる-d : バックグラウンド実行--name : 名前の指定⑤コンテナが稼働していることを確認
⑥curlコマンドでコンテナにアクセス
NAMES に表示されているものを確認docker exec コマンドを実行して、コンテナの中身を確認可能
NAMES で確認した名前を指定⑦ファイルの中を確認
①Cloud9でRDS作成用のymlを記述
AWSTemplateFormatVersion: 2010-09-09
Description: Hands-on template for RDS
Parameters:
VPCStack:
Type: String
Default: handson-cfn
DBUser:
Type: String
Default: dbmaster
DBPassword:
Type: String
Default: H&ppyHands0n
NoEcho: true
Resources:
DBInstance:
Type: AWS::RDS::DBInstance
DeletionPolicy: Delete
Properties:
DBInstanceClass: db.t2.micro
AllocatedStorage: "10"
StorageType: gp2
Engine: MySQL
MasterUsername: !Ref DBUser
MasterUserPassword: !Ref DBPassword
DBName: wordpress
BackupRetentionPeriod: 0
DBSubnetGroupName: !Ref DBSubnetGroup
VPCSecurityGroups:
- !Ref DBSecurityGroup
DBSubnetGroup:
Type: AWS::RDS::DBSubnetGroup
Properties:
DBSubnetGroupDescription: DB Subnet Group for Private Subnet
SubnetIds:
- Fn::ImportValue: !Sub ${VPCStack}-PrivateSubnet1
- Fn::ImportValue: !Sub ${VPCStack}-PrivateSubnet2
DBSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: !Sub ${AWS::StackName}-MySQL
VpcId:
Fn::ImportValue: !Sub ${VPCStack}-VPCID
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 3306
ToPort: 3306
CidrIp: 10.0.0.0/16
Outputs:
DBEndpoint:
Value: !GetAtt DBInstance.Endpoint.Address
Export:
Name: !Sub ${AWS::StackName}-DBEndpoint
②Cloud9でRDS用のスタック「handson-cfn-rds」を作成
③Cloud9でロードバランサー作成用のymlを記述
AWSTemplateFormatVersion: 2010-09-09
Description: Hands-on template for ALB
Parameters:
VPCStack:
Type: String
Default: handson-cfn
EC2Stack:
Type: String
Default: handson-cfn-ec2
Resources:
FrontLB:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Name: !Ref AWS::StackName
Subnets:
- Fn::ImportValue: !Sub ${VPCStack}-PublicSubnet1
- Fn::ImportValue: !Sub ${VPCStack}-PublicSubnet2
SecurityGroups:
- !Ref SecurityGroupLB
FrontLBListener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
LoadBalancerArn: !Ref FrontLB
Port: 80
Protocol: HTTP
DefaultActions:
- Type: forward
TargetGroupArn: !Ref FrontLBTargetGroup
FrontLBTargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
Name: !Sub ${AWS::StackName}-tg
VpcId:
Fn::ImportValue: !Sub ${VPCStack}-VPCID
Port: 80
Protocol: HTTP
HealthCheckPath: /.check_alive
Targets:
- Id:
Fn::ImportValue: !Sub ${EC2Stack}-EC2WebServer01
SecurityGroupLB:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: !Ref AWS::StackName
VpcId:
Fn::ImportValue: !Sub ${VPCStack}-VPCID
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
Outputs:
FrontLBEndpoint:
Value: !GetAtt FrontLB.DNSName
Export:
Name: !Sub ${AWS::StackName}-Endpoint
④Cloud9でロードバランサー用のスタック「handson-cfn-elb」を作成
⑤CloudFormationでRDSの作成をスタック画面で確認
⑥CloudFormationでロードバランサーの作成をスタック画面で確認
①Cloud9でhandson-cfn-ec2というスタックを作成
②CloudFormationのスタック画面で作成を確認
③UserDataシェルをEC2作成ymlに追記する
④EC2作成ymlにUserDataを追記する ※UserData: !Base64 | パイプが必要
⑤Validateコマンドでチェック実施
⑥Updateコマンドにより更新を実施
⑦該当インスタンスのUserDataにデーターが反映されていることを確認
①CloudFormationでスタック作成
②VPCテンプレートのネームタグを「PublicSubnet1-update」に編集する
③Cloud9でアップデートを実施
④ネームタグが更新されていることを確認