AWS
ログイン
https://us-east-1.signin.aws.amazon.com
最初はルートアカウント認証情報を使用してサインインから入る。
ログインしたら、アカウント名 -> アカウント
からアカウントIDが確認できる。
チュートリアル
https://aws.amazon.com/jp/getting-started/tutorials/
EC2
キーペア
インスタンスにsshで接続するための秘密鍵をダウンロードできる。
~/.ssh
に保存するのがおすすめらしい。
ssh接続
# ssh -i ~/documents/aws/MyKeyPair.pem ec2-user@111.111.111.111
ssh -i [keyの場所] ec2-user@[public ID]
Cloud Formation
CLIからスタック作成
https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html#synopsis
.json
ファイルを指定してスタックを作成
aws cloudformation create-stack --stack-name [stack-name] --template-body file://./[json/yaml file]
# aws cloudformation create-stack hoge --template-body file://./hoge.yaml
テンプレートにパラメータがある場合は以下のように指定する。
--parameters ParameterKey=Parm1,ParameterValue=test1 ParameterKey=Parm2,ParameterValue=test2
設定ファイルの書き方
Parameters
ユーザー名やパスワードなど、テンプレート自体には格納したくない機密情報、アプリ固有の設定などを書く。
Parameters
セクションでパラメータを定義して、他の場所からref! [param-name]
で参照できる。
Parameters:
bucketName:
Description: "name of bucket"
Type: String
Default: bucketNameDefault
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ref! bucketName
パラメータ参照の詳細はここ。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html#ref-parameters
CLI
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-configure.html
マネージメントコンソールでアカウント名 -> 認証情報
から、アクセスキーとシークレットキーを発行する。
# regionの選択で、東京はap-northeast-1を入れる。
winpty aws configure
CodePipeline
CIができる。
承認機能を使ったワークフローも組める。
CodeBuild
S3
にアップロードする場合はCodeBuild
にS3
のR/W権限をつける。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::codepipeline-ap-northeast-1-*"
],
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetBucketAcl",
"s3:GetBucketLocation"
]
},
{
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::[バケット名]/*"
],
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetBucketAcl",
"s3:GetBucketLocation"
]
}
]
}
S3
CloudFormation
最小構成
AWSTemplateFormatVersion: 2010-09-09
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: 'test-bucket'
# Properties:
# AccessControl: PublicRead
# WebsiteConfiguration:
# IndexDocument: index.html
# ErrorDocument: error.html
# スタックを消してもバケットは消さない
# DeletionPolicy: Retain
# BucketPolicy:
# Type: AWS::S3::BucketPolicy
# Properties:
# PolicyDocument:
# Id: MyPolicy
# Version: 2012-10-17
# Statement:
# - Sid: PublicReadForGetBucketObjects
# Effect: Allow
# Principal: '*'
# Action: 's3:GetObject'
# Resource: !Join
# - ''
# - - 'arn:aws:s3:::'
# - !Ref S3Bucket
# - /*
# Bucket: !Ref S3Bucket
AWSTemplateFormatVersion: 2010-09-09
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: PublicRead
WebsiteConfiguration:
IndexDocument: index.html
ErrorDocument: error.html
# スタックを消してもバケットは消さない
DeletionPolicy: Retain
BucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
PolicyDocument:
Id: MyPolicy
Version: 2012-10-17
Statement:
- Sid: PublicReadForGetBucketObjects
Effect: Allow
Principal: '*'
Action: 's3:GetObject'
Resource: !Join
- ''
- - 'arn:aws:s3:::'
- !Ref S3Bucket
- /*
Bucket: !Ref S3Bucket
Outputs:
WebsiteURL:
Value: !GetAtt
- S3Bucket
- WebsiteURL
Description: URL for website hosted on S3
S3BucketSecureURL:
Value: !Join
- ''
- - 'https://'
- !GetAtt
- S3Bucket
- DomainName
Description: Name of S3 bucket to hold website content
静的ウェブサイトのデプロイ
バケットポリシーの変更には
S3コンソール > アクセス権限タブ > パブリックアクセス設定
で、以下のチェックをはずす
- 新規のパブリックバケットポリシーをブロックする(推奨)`
- パブリック ACL を通じて付与されたパブリックアクセスを削除する (推奨)
- 新規のパブリック ACL と、パブリックオブジェクトのアップロードをブロックする (推奨)
https://qiita.com/hiroyuki7/items/611d6e66831523c9ec64
バケットポリシー
読み取り専用の場合の例
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadForGetBucketObjects",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::hako1912-page1/*"
}
]
}