커맨드 1발로 AWS에 극소 구성의 웹 서버(SSL/TLS 대응 끝난)를 구축하고 싶다
무슨
SSL/TLS 대응 끝난 웹 서버의 극소의 구성을 빨리 만듭니다. CloudFormation을 사용합니다.
대략의 흐름을 잡으면 Docker 등과의 조합으로, 명령 1발로 Web 서버와 그 인프라를 구축, 삭제할 수 있습니다.
이번에 쓴 코드 등 :
htps : // 기주 b. 코 m / Ponsea / A ws Mimima l-u-bse-r-r
인프라 사양
https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/
인프라 구성
최종 인프라 구성입니다.
API Gateway의 VPC 링크와 개인 통합 기능을 사용하여 요청을 EC2로 우회합니다.
Cloud Map은 ApiGateway가 EC2 인스턴스의 IP 주소/포트 번호를 확인하는 데 사용합니다.
전제
이번에는 CloudFormation을 사용합니다. CloudFormation이란 단적으로 말하면, 전술한 인프라 구성을 정의한 파일(yaml 또는 json 형식)을 준비해 실행하면, 그 인프라 구성을 실제로 구축해 주는 뛰어난 것입니다.
아래에는 이번 CloudFormation 템플릿 파일(인프라 구성을 정의한 파일)이 있습니다.
template.yaml
는 인프라 구성 정의 파일입니다.template.yaml
안에서는 이미, 자동으로 Docker의 httpd 이미지가 80번 포트로 실행되도록(듯이) 설정되어 있습니다. (자세한 것은 후술)docker run -d -p 80:80 httpd
1명의 명령으로 인프라 구축
template.yaml
있는 디렉토리에서 다음 명령을 실행하십시오. 그러면 실제로 인프라 구성이 구축됩니다.
aws cloudformation create-stack \
--stack-name minimal-webserver \ 任意のスタック名 (実際に作成されるAWSリソースの総称のようなもの)
--template-body file://template.yaml \
--parameters \
ParameterKey=Ec2InstanceType,ParameterValue=t2.micro \ インスタンスタイプはお好みで(t2.microの部分)
ParameterKey=SshKeyName,ParameterValue=<YOUR SSH KEY NAME> \ 予め作っておいたEC2のSSHキーペア名を指定
ParameterKey=SshLocation,ParameterValue=<YOUR SSH LOCATION> SSH元のIPをx.x.x.x/x形式で指定し制限することをお勧めします。省略すれば0.0.0.0/0(制限なし)となります。
빌드의 상태는 AWS의 CloudFormation 콘솔에서 확인할 수 있습니다. 상태가 CREATE_COMPLETE
가 되면 구축 완료입니다.
빌드가 완료된 후 EC2 인스턴스의 퍼블릭 IP와 웹 서버의 URL(엔드포인트)을 확인합니다.
aws cloudformation describe-stacks --stack-name minimal-webserver
{
"Stacks": [
{
...
"StackStatus": "CREATE_COMPLETE"
...
"Outputs": [
{
"OutputKey": "ApiGatewayUrl",
↓ WebサーバーのURL
"OutputValue": "https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/",
"Description": "API Gateway endpoint URL for $default stage"
},
{
"OutputKey": "Ec2InstancePublicIp",
↓ EC2 インスタンスのパブリックIP
"OutputValue": "xxx.xxx.xxx.xxx",
"Description": "EC2 Instance Public IP"
}
],
...
]
}
"OutputValue": "https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/",
URL을 방문하면 웹 페이지를 볼 수 있습니다.
현재는 Docker httpd 이미지의 "It works!"라는 페이지가 표시되어야합니다.
SSH 연결하려는 경우
ssh -i "/path/to/your-ssh-key.pem" ec2-user@<YOUR EC2 PUBLIC IP>
모두 함께 삭제하고 싶은 경우 :
aws cloudformation delete-stack --stack-name minimal-webserver
template.yaml 분석
이번에 미리 준비한 template.yaml에서 정의한 EC2 인스턴스는 미리 Docker, docker-compose, git을 설치하고 Docker의 httpd 이미지를 실행하는 스크립트를 포함하고 있습니다. 이 스크립트는 EC2 인스턴스를 처음 시작할 때 실행됩니다.
UserData:
Fn::Base64: !Sub |
#!/bin/bash -xe
# docker, gitインストール
yum install -y docker git
# docker-composeインストール
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
systemctl start docker # Dockerデーモン起動
systemctl enable docker # Dockerデーモン自動起動設定
usermod -a -G docker ec2-user # dockerコマンドをec2-userで実行できる様に
docker run -d -p 80:80 httpd # httpdイメージを実行
용도에 맞추어, 여기서 Docker의 컨테이너 구성을 정의하면, 곧바로 싱글 노드의 작은 Web 서비스 지어질 것 같네요.
CloudFormation 편리!
전재원
Reference
이 문제에 관하여(커맨드 1발로 AWS에 극소 구성의 웹 서버(SSL/TLS 대응 끝난)를 구축하고 싶다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ponsea/items/7aa71fb74f207fe4ce8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
aws cloudformation create-stack \
--stack-name minimal-webserver \ 任意のスタック名 (実際に作成されるAWSリソースの総称のようなもの)
--template-body file://template.yaml \
--parameters \
ParameterKey=Ec2InstanceType,ParameterValue=t2.micro \ インスタンスタイプはお好みで(t2.microの部分)
ParameterKey=SshKeyName,ParameterValue=<YOUR SSH KEY NAME> \ 予め作っておいたEC2のSSHキーペア名を指定
ParameterKey=SshLocation,ParameterValue=<YOUR SSH LOCATION> SSH元のIPをx.x.x.x/x形式で指定し制限することをお勧めします。省略すれば0.0.0.0/0(制限なし)となります。
aws cloudformation describe-stacks --stack-name minimal-webserver
{
"Stacks": [
{
...
"StackStatus": "CREATE_COMPLETE"
...
"Outputs": [
{
"OutputKey": "ApiGatewayUrl",
↓ WebサーバーのURL
"OutputValue": "https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/",
"Description": "API Gateway endpoint URL for $default stage"
},
{
"OutputKey": "Ec2InstancePublicIp",
↓ EC2 インスタンスのパブリックIP
"OutputValue": "xxx.xxx.xxx.xxx",
"Description": "EC2 Instance Public IP"
}
],
...
]
}
ssh -i "/path/to/your-ssh-key.pem" ec2-user@<YOUR EC2 PUBLIC IP>
aws cloudformation delete-stack --stack-name minimal-webserver
이번에 미리 준비한 template.yaml에서 정의한 EC2 인스턴스는 미리 Docker, docker-compose, git을 설치하고 Docker의 httpd 이미지를 실행하는 스크립트를 포함하고 있습니다. 이 스크립트는 EC2 인스턴스를 처음 시작할 때 실행됩니다.
UserData:
Fn::Base64: !Sub |
#!/bin/bash -xe
# docker, gitインストール
yum install -y docker git
# docker-composeインストール
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
systemctl start docker # Dockerデーモン起動
systemctl enable docker # Dockerデーモン自動起動設定
usermod -a -G docker ec2-user # dockerコマンドをec2-userで実行できる様に
docker run -d -p 80:80 httpd # httpdイメージを実行
용도에 맞추어, 여기서 Docker의 컨테이너 구성을 정의하면, 곧바로 싱글 노드의 작은 Web 서비스 지어질 것 같네요.
CloudFormation 편리!
전재원
Reference
이 문제에 관하여(커맨드 1발로 AWS에 극소 구성의 웹 서버(SSL/TLS 대응 끝난)를 구축하고 싶다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ponsea/items/7aa71fb74f207fe4ce8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(커맨드 1발로 AWS에 극소 구성의 웹 서버(SSL/TLS 대응 끝난)를 구축하고 싶다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ponsea/items/7aa71fb74f207fe4ce8d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)