110 lines
3.4 KiB
YAML
110 lines
3.4 KiB
YAML
AWSTemplateFormatVersion: '2010-09-09'
|
|
Description: (SO8032) - Stable-Diffusion AWS Extension Workshop - EC2 Instance
|
|
Parameters:
|
|
KeyName:
|
|
Description: Name of an existing EC2 KeyPair to enable SSH access to the instance
|
|
Type: AWS::EC2::KeyPair::KeyName
|
|
ConstraintDescription: must be the name of an existing EC2 KeyPair.
|
|
|
|
Mappings:
|
|
RegionToAmiId:
|
|
ap-south-1:
|
|
AMI: ami-089b78354e92adbc4
|
|
eu-north-1:
|
|
AMI: ami-09f0506c9ef0fb473
|
|
eu-west-3:
|
|
AMI: ami-000cbe82b60906d24
|
|
eu-west-2:
|
|
AMI: ami-00f314baca4922fe3
|
|
eu-west-1:
|
|
AMI: ami-020fc399c31009b50
|
|
ap-northeast-3:
|
|
AMI: ami-00615a13ea1ff3de8
|
|
ap-northeast-2:
|
|
AMI: ami-07d16c043aa8e5153
|
|
ap-northeast-1:
|
|
AMI: ami-0ba151ad81cdd97be
|
|
ca-central-1:
|
|
AMI: ami-0c0ef44e5ccbd075f
|
|
sa-east-1:
|
|
AMI: ami-0efc6acdb081d5a82
|
|
ap-east-1:
|
|
AMI: ami-0476827462b538638
|
|
ap-southeast-1:
|
|
AMI: ami-01079af93e791f059
|
|
ap-southeast-2:
|
|
AMI: ami-0c30788ba2f3b701c
|
|
eu-central-1:
|
|
AMI: ami-08046b3f92ed2f520
|
|
us-east-1:
|
|
AMI: ami-031cf125b681ca3e0
|
|
us-east-2:
|
|
AMI: ami-0d68d031be2577777
|
|
us-west-1:
|
|
AMI: ami-0cab1ec90365016c6
|
|
us-west-2:
|
|
AMI: ami-01cb61d12413ba783
|
|
|
|
Resources:
|
|
SecurityGroup:
|
|
Type: AWS::EC2::SecurityGroup
|
|
Properties:
|
|
GroupName: !Sub ${AWS::StackName}-sg
|
|
GroupDescription: Security group for SD WebUI EC2 instance
|
|
SecurityGroupIngress:
|
|
- IpProtocol: tcp
|
|
FromPort: 22
|
|
ToPort: 22
|
|
CidrIp: 0.0.0.0/0
|
|
- IpProtocol: tcp
|
|
FromPort: 7860
|
|
ToPort: 7860
|
|
CidrIp: 0.0.0.0/0
|
|
EC2Instance:
|
|
Type: AWS::EC2::Instance
|
|
Properties:
|
|
InstanceType: c5.2xlarge
|
|
ImageId: !FindInMap [RegionToAmiId, !Ref AWS::Region, AMI]
|
|
KeyName: !Ref KeyName
|
|
BlockDeviceMappings:
|
|
- DeviceName: /dev/sda1
|
|
Ebs:
|
|
VolumeSize: 300
|
|
VolumeType: gp2
|
|
"Tags" : [
|
|
{"Key" : "Name", "Value" : "sd-on-aws"},
|
|
]
|
|
SecurityGroups:
|
|
- Ref: SecurityGroup
|
|
UserData:
|
|
'Fn::Base64': |
|
|
#!/bin/bash
|
|
sudo sed -i "/#\$nrconf{restart} = 'i';/s/.*/\$nrconf{restart} = 'a';/" /etc/needrestart/needrestart.conf
|
|
sudo apt-get update
|
|
sudo apt install wget git python3 python3.8-venv build-essential net-tools libgl1 -y
|
|
cd /home/ubuntu
|
|
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
|
|
cd stable-diffusion-webui/extensions
|
|
git clone https://github.com/awslabs/stable-diffusion-aws-extension.git
|
|
cd stable-diffusion-aws-extension/
|
|
./pre-flight.sh -s
|
|
cd ..
|
|
sudo chown -R ubuntu:ubuntu stable-diffusion-aws-extension/ sd_dreambooth_extension/ sd-webui-controlnet/ ../../stable-diffusion-webui/
|
|
cd ..
|
|
sudo -u ubuntu python3 -m venv venv
|
|
sudo -u ubuntu nohup bash webui.sh --enable-insecure-extension-access --skip-torch-cuda-test --no-half --listen > webui-log.txt
|
|
|
|
MyEIP:
|
|
Type: AWS::EC2::EIP
|
|
MyEIPAssociation:
|
|
Type: AWS::EC2::EIPAssociation
|
|
Properties:
|
|
AllocationId: !GetAtt MyEIP.AllocationId
|
|
InstanceId: !Ref EC2Instance
|
|
|
|
Outputs:
|
|
WebUIURL:
|
|
Description: URL for Stable Diffusion Web UI
|
|
# add port 7860 to the end of the URL
|
|
Value: !Sub http://${MyEIP.PublicIp}:7860
|