{Alibaba ApsaraDB for MongoDB} Getting Started

https://www.alibabacloud.com/help/en/mongodb/

https://dev.classmethod.jp/articles/how-to-sign-up-alibaba-cloud-international-account/


東京リージョンは価格が高いため杭州市を使用する
杭州市を使用する場合、実名登録が必要
実名登録は完了しても連絡はこないので定期的に確認必要


Japna(Tokyo) -> $0.740/時間
ap-northeast-1
ap-northeast-1a


China(Hangzhou) 杭州市 -> $0.404/時間
cn-hangzhou
cn-hangzhou-h


aliyun ecs DescribeRegions 
aliyun ecs DescribeZones --RegionId cn-hangzhou

--China(Hangzhou) 杭州
export ALIBABACLOUD_REGION_ID=cn-hangzhou

 

-- 1. VPCとECSの作成

 

cat <<-'EOF' > variables.tf

locals {
  availability_zone = "cn-hangzhou-h"
}


variable "instance_type" {
  description = "instance_type"
  type = string
  default = "ecs.n1.tiny"
}

variable "image_id" {
  description = "image_id"
  type = string
  default = "aliyun_2_1903_x64_20G_alibase_20231221.vhd"
}

EOF

 

cat <<-'EOF' > main.tf

terraform {
  required_version = ">= 1.0.0, < 2.0.0"
  required_providers {
    alicloud = {
       source  = "aliyun/alicloud"
       version = "= 1.217.0"
    }
  }
}

provider "alicloud" {
    region  = "cn-hangzhou"
}


resource "alicloud_vpc" "vpc01" {
  vpc_name          = "vpc01"
  description       = "vpc01"
  cidr_block        = "10.2.0.0/16"
}

 

resource "alicloud_vswitch" "sw01" {
  vswitch_name      = "sw01"
  description       = "sw01"
  vpc_id            = alicloud_vpc.vpc01.id
  cidr_block        = "10.2.1.0/24"
  zone_id           = local.availability_zone
}

resource "alicloud_security_group" "sg01" {
  name                = "sg01"
  description         = "sg01"
  vpc_id              = alicloud_vpc.vpc01.id
  security_group_type = "normal"
}


resource "alicloud_security_group_rule" "sg0101" {
  type              = "ingress"
  ip_protocol       = "tcp"
  port_range        = "22/22"
  security_group_id = alicloud_security_group.sg01.id
  nic_type          = "intranet"
  policy            = "accept"
  priority          = 10
  cidr_ip           = "0.0.0.0/0"
  description       = "sg0101"
}


resource "alicloud_vpc_ipv4_gateway" "gw01" {
  ipv4_gateway_name        = "gw01"
  ipv4_gateway_description = "gw01"
  vpc_id                   = alicloud_vpc.vpc01.id
  enabled                  = true
}

 

 

# ルートテーブルへvSwitchの関連付け
resource "alicloud_route_table_attachment" "sw01_rt01" {
  vswitch_id     = alicloud_vswitch.sw01.id
  route_table_id = alicloud_vpc.vpc01.route_table_id
}


# ルートテーブルへカスタムルート追加
resource "alicloud_route_entry" "rt0101" {
  name                  = "rt0101"
  route_table_id        = alicloud_vpc.vpc01.route_table_id
  destination_cidrblock = "0.0.0.0/0"
  nexthop_type          = "Ipv4Gateway"
  nexthop_id            = alicloud_vpc_ipv4_gateway.gw01.id
}


resource "alicloud_instance" "instance01" {

  image_id                   = var.image_id
  instance_type              = var.instance_type
  security_groups            = [alicloud_security_group.sg01.id]
  instance_name              = "instance01"
  system_disk_category       = "cloud_ssd"
  system_disk_name           = "instance01"
  system_disk_size           = 20
  description                = "instance01"
  internet_charge_type       = "PayByBandwidth"
  internet_max_bandwidth_out = 0
  host_name                  = "instance01"
  vswitch_id                 = alicloud_vswitch.sw01.id
  instance_charge_type       = "PostPaid"
  key_name                   = "alibabakey02"
  deletion_protection        = false
  credit_specification       = "Standard"

}


resource "alicloud_eip_address" "eip01" {
  address_name              = "eip01"
  bandwidth                 = 1
  deletion_protection       = false
  description               = "eip01"
  internet_charge_type      = "PayByTraffic"
  isp                       = "BGP"
  payment_type              = "PayAsYouGo"
  netmode                   = "public"
}

# インスタンスとEIPの関連付け
resource "alicloud_eip_association" "instance01_eip01" {
  instance_id              = alicloud_instance.instance01.id
  allocation_id            = alicloud_eip_address.eip01.id
}

 

EOF

 

cat <<-'EOF' > outputs.tf

 

output "vpc01_id" {
  value = alicloud_vpc.vpc01.id
  description = "vpc01.id"
}

output "vpc01_route_table_id" {
  value = alicloud_vpc.vpc01.route_table_id
  description = "vpc01.route_table_id"
}

output "sw01_id" {
  value = alicloud_vswitch.sw01.id
  description = "sw01.id"
}

output "sg01_id" {
  value = alicloud_security_group.sg01.id
  description = "sg01.id"
}

output "gw01_id" {
  value = alicloud_vpc_ipv4_gateway.gw01.id
  description = "gw01.id"
}


output "instance01_id" {
  value = alicloud_instance.instance01.id
  description = "instance01.id"
}


output "eip01_id" {
  value = alicloud_eip_address.eip01.id
  description = "eip01.id"
}

 

EOF

 


terraform init
terraform fmt
terraform -version

 

terraform plan

terraform apply -auto-approve


-- 2. MongoDB作成

aliyun dds DescribeAvailableResource \
--ZoneId cn-hangzhou-h 


2コア、8GB

 

aliyun dds CreateDBInstance \
--DBInstanceClass mdb.shard.4x.large.d \
--DBInstanceStorage 20 \
--Engine MongoDB \
--EngineVersion 6.0 \
--AccountPassword 'password' \
--ChargeType PostPaid \
--NetworkType VPC \
--ReadonlyReplicas 0 \
--ReplicationFactor 3 \
--SecurityIPList '10.2.0.0/16' \
--StorageEngine WiredTiger \
--StorageType cloud_essd1 \
--VSwitchId vsw-111111111111111111111 \
--VpcId vpc-111111111111111111111 \
--ZoneId cn-hangzhou-h

 

aliyun dds DescribeDBInstances 

 

 

 

-- 3. ホワイトリストの設定


aliyun dds DescribeSecurityIps \
--DBInstanceId dds-1111111111111111 

aliyun dds ModifySecurityIps \
--DBInstanceId dds-1111111111111111 \
--SecurityIps 10.2.1.111 \
--ModifyMode Append 


aliyun dds DescribeSecurityIps \
--DBInstanceId dds-1111111111111111 

 

 


-- 4. ECSから動作確認


tar xvzf mongosh-2.2.3-linux-x64.tgz

cd mongosh-2.2.3-linux-x64
cd bin

 

./mongosh mongodb://root:'password'@dds-11111111111111112.mongodb.rds.aliyuncs.com:3717,dds-11111111111111111.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-11111111


show dbs;


rs.conf()
rs.status();


use test


db.tab1.insertOne( { col1: "val1"} )
db.tab1.find()

exit

 


-- 5. クリーンアップ


aliyun dds DescribeDBInstances 


aliyun dds DeleteDBInstance \
--DBInstanceId dds-1111111111111111 

 


terraform destroy -auto-approve

 

 

 

{Alibaba VPC} VPCピアリング接続の作成と管理

 

https://www.alibabacloud.com/help/ja/vpc/user-guide/create-and-manage-vpc-peering-connection
https://www.alibabacloud.com/help/ja/vpc/user-guide/examples-of-vpc-peering-connections
https://www.softbank.jp/biz/blog/cloud-technology/articles/202211/alibabacloud-vpc/


同一アカウント
クロスリージョン

Terraform で異なる2リージョンにVPCとECSインスタンスを作成する
VPCのアドレス範囲は重複しないようにする


前提: 
コンソールより「CDTサービスの有効化」実施済
ECS-KeyPairをTokyoとSeoulで作成済

 


tfファイル相違点: 


Japna(Tokyo)
ap-northeast-1
ap-northeast-1a
ecs.t5-lc2m1.nano
alibabakey01
cloud_ssd
10.11.1.0/24

South Korea (Seoul)
ap-northeast-2
ap-northeast-2a
ecs.t6-c4m1.large
alibabakey03
cloud_essd
10.2.1.0/24


-- 1. VPCとECSの作成(Tokyo)
-- セキュリティグループにSeoulからのICMP許可追加必要

cd ${BASE_DIR}/tokyo

cat <<-'EOF' > variables.tf

locals {
  availability_zone = "ap-northeast-1a"
}


variable "instance_type" {
  description = "instance_type"
  type = string
  default = "ecs.t5-lc2m1.nano"
}

variable "image_id" {
  description = "image_id"
  type = string
  default = "aliyun_2_1903_x64_20G_alibase_20231221.vhd"
}

EOF

 

cat <<-'EOF' > main.tf

terraform {
  required_version = ">= 1.0.0, < 2.0.0"
  required_providers {
    alicloud = {
       source  = "aliyun/alicloud"
       version = "= 1.217.0"
    }
  }
}

provider "alicloud" {
    region  = "ap-northeast-1"
}


resource "alicloud_vpc" "vpc01" {
  vpc_name          = "vpc01"
  description       = "vpc01"
  cidr_block        = "10.11.0.0/16"
}

 

resource "alicloud_vswitch" "sw01" {
  vswitch_name      = "sw01"
  description       = "sw01"
  vpc_id            = alicloud_vpc.vpc01.id
  cidr_block        = "10.11.1.0/24"
  zone_id           = local.availability_zone
}

resource "alicloud_security_group" "sg01" {
  name                = "sg01"
  description         = "sg01"
  vpc_id              = alicloud_vpc.vpc01.id
  security_group_type = "normal"
}


resource "alicloud_security_group_rule" "sg0101" {
  type              = "ingress"
  ip_protocol       = "tcp"
  port_range        = "22/22"
  security_group_id = alicloud_security_group.sg01.id
  nic_type          = "intranet"
  policy            = "accept"
  priority          = 10
  cidr_ip           = "0.0.0.0/0"
  description       = "sg0101"
}

resource "alicloud_security_group_rule" "sg0102" {
  type              = "ingress"
  ip_protocol       = "icmp"
  port_range        = "-1/-1"
  security_group_id = alicloud_security_group.sg01.id
  nic_type          = "intranet"
  policy            = "accept"
  priority          = 10
  cidr_ip           = "10.2.1.0/24"
  description       = "sg0102"
}

resource "alicloud_vpc_ipv4_gateway" "gw01" {
  ipv4_gateway_name        = "gw01"
  ipv4_gateway_description = "gw01"
  vpc_id                   = alicloud_vpc.vpc01.id
  enabled                  = true
}

 

 

# ルートテーブルへvSwitchの関連付け
resource "alicloud_route_table_attachment" "sw01_rt01" {
  vswitch_id     = alicloud_vswitch.sw01.id
  route_table_id = alicloud_vpc.vpc01.route_table_id
}


# ルートテーブルへカスタムルート追加
resource "alicloud_route_entry" "rt0101" {
  name                  = "rt0101"
  route_table_id        = alicloud_vpc.vpc01.route_table_id
  destination_cidrblock = "0.0.0.0/0"
  nexthop_type          = "Ipv4Gateway"
  nexthop_id            = alicloud_vpc_ipv4_gateway.gw01.id
}


resource "alicloud_instance" "instance01" {

  image_id                   = var.image_id
  instance_type              = var.instance_type
  security_groups            = [alicloud_security_group.sg01.id]
  instance_name              = "instance01"
  system_disk_category       = "cloud_ssd"
  system_disk_name           = "instance01"
  system_disk_size           = 20
  description                = "instance01"
  internet_charge_type       = "PayByBandwidth"
  internet_max_bandwidth_out = 0
  host_name                  = "instance01"
  vswitch_id                 = alicloud_vswitch.sw01.id
  instance_charge_type       = "PostPaid"
  key_name                   = "alibabakey01"
  deletion_protection        = false
  credit_specification       = "Standard"

}


resource "alicloud_eip_address" "eip01" {
  address_name              = "eip01"
  bandwidth                 = 1
  deletion_protection       = false
  description               = "eip01"
  internet_charge_type      = "PayByTraffic"
  isp                       = "BGP"
  payment_type              = "PayAsYouGo"
  netmode                   = "public"
}

# インスタンスとEIPの関連付け
resource "alicloud_eip_association" "instance01_eip01" {
  instance_id              = alicloud_instance.instance01.id
  allocation_id            = alicloud_eip_address.eip01.id
}

 

EOF

 

cat <<-'EOF' > outputs.tf

 

output "vpc01_id" {
  value = alicloud_vpc.vpc01.id
  description = "vpc01.id"
}

output "vpc01_route_table_id" {
  value = alicloud_vpc.vpc01.route_table_id
  description = "vpc01.route_table_id"
}

output "sw01_id" {
  value = alicloud_vswitch.sw01.id
  description = "sw01.id"
}

output "sg01_id" {
  value = alicloud_security_group.sg01.id
  description = "sg01.id"
}

output "gw01_id" {
  value = alicloud_vpc_ipv4_gateway.gw01.id
  description = "gw01.id"
}


output "instance01_id" {
  value = alicloud_instance.instance01.id
  description = "instance01.id"
}


output "eip01_id" {
  value = alicloud_eip_address.eip01.id
  description = "eip01.id"
}

 

EOF

 


terraform init
terraform fmt
terraform -version

 

terraform plan

 

terraform apply -auto-approve


-- 2. VPCとECSの作成(Seoul)
-- セキュリティグループにTokyoからのICMP許可追加必要

cd ${BASE_DIR}/seoul


cat <<-'EOF' > variables.tf

locals {
  availability_zone = "ap-northeast-2a"
}


variable "instance_type" {
  description = "instance_type"
  type = string
  default = "ecs.t6-c4m1.large"
}

variable "image_id" {
  description = "image_id"
  type = string
  default = "aliyun_2_1903_x64_20G_alibase_20231221.vhd"
}

EOF

 

cat <<-'EOF' > main.tf

terraform {
  required_version = ">= 1.0.0, < 2.0.0"
  required_providers {
    alicloud = {
       source  = "aliyun/alicloud"
       version = "= 1.217.0"
    }
  }
}

provider "alicloud" {
    region  = "ap-northeast-2"
}


resource "alicloud_vpc" "vpc01" {
  vpc_name          = "vpc01"
  description       = "vpc01"
  cidr_block        = "10.2.0.0/16"
}

 

resource "alicloud_vswitch" "sw01" {
  vswitch_name      = "sw01"
  description       = "sw01"
  vpc_id            = alicloud_vpc.vpc01.id
  cidr_block        = "10.2.1.0/24"
  zone_id           = local.availability_zone
}

resource "alicloud_security_group" "sg01" {
  name                = "sg01"
  description         = "sg01"
  vpc_id              = alicloud_vpc.vpc01.id
  security_group_type = "normal"
}


resource "alicloud_security_group_rule" "sg0101" {
  type              = "ingress"
  ip_protocol       = "tcp"
  port_range        = "22/22"
  security_group_id = alicloud_security_group.sg01.id
  nic_type          = "intranet"
  policy            = "accept"
  priority          = 10
  cidr_ip           = "0.0.0.0/0"
  description       = "sg0101"
}

resource "alicloud_security_group_rule" "sg0102" {
  type              = "ingress"
  ip_protocol       = "icmp"
  port_range        = "-1/-1"
  security_group_id = alicloud_security_group.sg01.id
  nic_type          = "intranet"
  policy            = "accept"
  priority          = 10
  cidr_ip           = "10.11.1.0/24"
  description       = "sg0102"
}


resource "alicloud_vpc_ipv4_gateway" "gw01" {
  ipv4_gateway_name        = "gw01"
  ipv4_gateway_description = "gw01"
  vpc_id                   = alicloud_vpc.vpc01.id
  enabled                  = true
}

 

 

# ルートテーブルへvSwitchの関連付け
resource "alicloud_route_table_attachment" "sw01_rt01" {
  vswitch_id     = alicloud_vswitch.sw01.id
  route_table_id = alicloud_vpc.vpc01.route_table_id
}


# ルートテーブルへカスタムルート追加
resource "alicloud_route_entry" "rt0101" {
  name                  = "rt0101"
  route_table_id        = alicloud_vpc.vpc01.route_table_id
  destination_cidrblock = "0.0.0.0/0"
  nexthop_type          = "Ipv4Gateway"
  nexthop_id            = alicloud_vpc_ipv4_gateway.gw01.id
}


resource "alicloud_instance" "instance01" {

  image_id                   = var.image_id
  instance_type              = var.instance_type
  security_groups            = [alicloud_security_group.sg01.id]
  instance_name              = "instance01"
  system_disk_category       = "cloud_essd"
  system_disk_name           = "instance01"
  system_disk_size           = 20
  description                = "instance01"
  internet_charge_type       = "PayByBandwidth"
  internet_max_bandwidth_out = 0
  host_name                  = "instance01"
  vswitch_id                 = alicloud_vswitch.sw01.id
  instance_charge_type       = "PostPaid"
  key_name                   = "alibabakey03"
  deletion_protection        = false
  credit_specification       = "Standard"

}


resource "alicloud_eip_address" "eip01" {
  address_name              = "eip01"
  bandwidth                 = 1
  deletion_protection       = false
  description               = "eip01"
  internet_charge_type      = "PayByTraffic"
  isp                       = "BGP"
  payment_type              = "PayAsYouGo"
  netmode                   = "public"
}

# インスタンスとEIPの関連付け
resource "alicloud_eip_association" "instance01_eip01" {
  instance_id              = alicloud_instance.instance01.id
  allocation_id            = alicloud_eip_address.eip01.id
}

 

EOF

 

cat <<-'EOF' > outputs.tf

 

output "vpc01_id" {
  value = alicloud_vpc.vpc01.id
  description = "vpc01.id"
}

output "vpc01_route_table_id" {
  value = alicloud_vpc.vpc01.route_table_id
  description = "vpc01.route_table_id"
}

output "sw01_id" {
  value = alicloud_vswitch.sw01.id
  description = "sw01.id"
}

output "sg01_id" {
  value = alicloud_security_group.sg01.id
  description = "sg01.id"
}

output "gw01_id" {
  value = alicloud_vpc_ipv4_gateway.gw01.id
  description = "gw01.id"
}


output "instance01_id" {
  value = alicloud_instance.instance01.id
  description = "instance01.id"
}


output "eip01_id" {
  value = alicloud_eip_address.eip01.id
  description = "eip01.id"
}

 

EOF

 


terraform init
terraform fmt
terraform -version

 

terraform plan

 

terraform apply -auto-approve

 

-- 3. VPCピアリング接続の作成(Tokyo)
-- AcceptingAliUidパラメータ
-- はメインアカウントIDを使用する。 aliyun ram GetAccountAlias で取得可能


aliyun vpcpeer CreateVpcPeerConnection \
--AcceptingAliUid 1111111111111111 \
--AcceptingRegionId ap-northeast-2 \
--AcceptingVpcId vpc-111111111111111111111 \
--RegionId ap-northeast-1 \
--VpcId vpc-111111111111111111111 \
--Bandwidth 1 \
--Name vpcc01 

 


aliyun vpcpeer ListVpcPeerConnections 

 

-- 4. カスタムルート追加

-- 4.1 Tokyo → Seoul

aliyun vpc DescribeRouteEntryList \
--RouteTableId vtb-111111111111111111111


aliyun vpc CreateRouteEntries \
--RouteEntries.1.RouteTableId vtb-111111111111111111111 \
--RouteEntries.1.DstCidrBlock 10.2.1.0/24 \
--RouteEntries.1.NextHop pcc-111111111111111111 \
--RouteEntries.1.NextHopType VpcPeer \
--RouteEntries.1.Name rte01

-- 4.2 Seoul → Tokyo

aliyun vpc DescribeRouteEntryList \
--RouteTableId vtb-111111111111111111111 


aliyun vpc CreateRouteEntries \
--RouteEntries.1.RouteTableId vtb-111111111111111111111 \
--RouteEntries.1.DstCidrBlock 10.11.1.0/24 \
--RouteEntries.1.NextHop pcc-111111111111111111 \
--RouteEntries.1.NextHopType VpcPeer \
--RouteEntries.1.Name rte01


-- 5. 動作確認
-- 5.1 Tokyo → Seoul

ping 10.2.1.116 

-- 5.2 Seoul → Tokyo

ping 10.11.1.77 


-- 6. クリーンアップ

-- 6.1 VPCピアリング接続の削除(Tokyo)

aliyun vpcpeer ListVpcPeerConnections 


aliyun vpcpeer DeleteVpcPeerConnection \
--InstanceId pcc-111111111111111111 \
--Force true 


-- 6.2 VPCとECSの削除(Tokyo)

cd ${BASE_DIR}/tokyo
terraform destroy -auto-approve

-- 6.3 VPCとECSの削除(Seoul)

cd ${BASE_DIR}/seoul
terraform destroy -auto-approve

 

 

{Alibaba ApsaraDB for Redis} クイックスタート

https://qiita.com/wa-ta-ru/items/7cf3ee769488944dbc00

https://www.alibabacloud.com/help/ja/redis/getting-started/step-1-create-an-apsaradb-for-redis-instance


$0.009/時間

 

-- 1. VPCとECSの作成

 

cat <<-'EOF' > variables.tf

locals {
  availability_zone = "ap-northeast-1a"
}


variable "instance_type" {
  description = "instance_type"
  type = string
  default = "ecs.t5-lc2m1.nano"
}

variable "image_id" {
  description = "image_id"
  type = string
  default = "aliyun_2_1903_x64_20G_alibase_20231221.vhd"
}

EOF

 

cat <<-'EOF' > main.tf

terraform {
  required_version = ">= 1.0.0, < 2.0.0"
  required_providers {
    alicloud = {
       source  = "aliyun/alicloud"
       version = "= 1.217.0"
    }
  }
}

provider "alicloud" {
    region  = "ap-northeast-1"
}


resource "alicloud_vpc" "vpc01" {
  vpc_name          = "vpc01"
  description       = "vpc01"
  cidr_block        = "10.2.0.0/16"
}

 

resource "alicloud_vswitch" "sw01" {
  vswitch_name      = "sw01"
  description       = "sw01"
  vpc_id            = alicloud_vpc.vpc01.id
  cidr_block        = "10.2.1.0/24"
  zone_id           = local.availability_zone
}

resource "alicloud_security_group" "sg01" {
  name                = "sg01"
  description         = "sg01"
  vpc_id              = alicloud_vpc.vpc01.id
  security_group_type = "normal"
}


resource "alicloud_security_group_rule" "sg0101" {
  type              = "ingress"
  ip_protocol       = "tcp"
  port_range        = "22/22"
  security_group_id = alicloud_security_group.sg01.id
  nic_type          = "intranet"
  policy            = "accept"
  priority          = 10
  cidr_ip           = "0.0.0.0/0"
  description       = "sg0101"
}


resource "alicloud_vpc_ipv4_gateway" "gw01" {
  ipv4_gateway_name        = "gw01"
  ipv4_gateway_description = "gw01"
  vpc_id                   = alicloud_vpc.vpc01.id
  enabled                  = true
}

 

 

# ルートテーブルへvSwitchの関連付け
resource "alicloud_route_table_attachment" "sw01_rt01" {
  vswitch_id     = alicloud_vswitch.sw01.id
  route_table_id = alicloud_vpc.vpc01.route_table_id
}


# ルートテーブルへカスタムルート追加
resource "alicloud_route_entry" "rt0101" {
  name                  = "rt0101"
  route_table_id        = alicloud_vpc.vpc01.route_table_id
  destination_cidrblock = "0.0.0.0/0"
  nexthop_type          = "Ipv4Gateway"
  nexthop_id            = alicloud_vpc_ipv4_gateway.gw01.id
}


resource "alicloud_instance" "instance01" {

  image_id                   = var.image_id
  instance_type              = var.instance_type
  security_groups            = [alicloud_security_group.sg01.id]
  instance_name              = "instance01"
  system_disk_category       = "cloud_ssd"
  system_disk_name           = "instance01"
  system_disk_size           = 20
  description                = "instance01"
  internet_charge_type       = "PayByBandwidth"
  internet_max_bandwidth_out = 0
  host_name                  = "instance01"
  vswitch_id                 = alicloud_vswitch.sw01.id
  instance_charge_type       = "PostPaid"
  key_name                   = "alibabakey01"
  deletion_protection        = false
  credit_specification       = "Standard"

}


resource "alicloud_eip_address" "eip01" {
  address_name              = "eip01"
  bandwidth                 = 1
  deletion_protection       = false
  description               = "eip01"
  internet_charge_type      = "PayByTraffic"
  isp                       = "BGP"
  payment_type              = "PayAsYouGo"
  netmode                   = "public"
}

# インスタンスとEIPの関連付け
resource "alicloud_eip_association" "instance01_eip01" {
  instance_id              = alicloud_instance.instance01.id
  allocation_id            = alicloud_eip_address.eip01.id
}

 

EOF

 

cat <<-'EOF' > outputs.tf

 

output "vpc01_id" {
  value = alicloud_vpc.vpc01.id
  description = "vpc01.id"
}

output "vpc01_route_table_id" {
  value = alicloud_vpc.vpc01.route_table_id
  description = "vpc01.route_table_id"
}

output "sw01_id" {
  value = alicloud_vswitch.sw01.id
  description = "sw01.id"
}

output "sg01_id" {
  value = alicloud_security_group.sg01.id
  description = "sg01.id"
}

output "gw01_id" {
  value = alicloud_vpc_ipv4_gateway.gw01.id
  description = "gw01.id"
}


output "instance01_id" {
  value = alicloud_instance.instance01.id
  description = "instance01.id"
}


output "eip01_id" {
  value = alicloud_eip_address.eip01.id
  description = "eip01.id"
}

 

EOF

 


terraform init
terraform fmt
terraform -version

 

terraform plan

 

terraform apply -auto-approve

 


-- 2. Redis作成


aliyun r-kvstore CreateInstance \
--Appendonly no \
--Capacity 256 \
--ChargeType PostPaid \
--EngineVersion 5.0 \
--InstanceClass redis.master.micro.default \
--InstanceName redis01 \
--InstanceType Redis \
--NetworkType VPC \
--NodeType STAND_ALONE \
--Password 'password' \
--Port 6379 \
--VSwitchId vsw-111111111111111111111 \
--VpcId vpc-111111111111111111111 \
--ZoneId ap-northeast-1a 


aliyun r-kvstore DescribeInstances 


-- 3. ホワイトリストの設定

 

aliyun r-kvstore DescribeSecurityIps \
--InstanceId r-1111111111111111 


aliyun r-kvstore ModifySecurityIps \
--InstanceId r-1111111111111111 \
--SecurityIps 10.2.1.215 \
--ModifyMode Append 


aliyun r-kvstore DescribeSecurityIps \
--InstanceId r-1111111111111111 


-- 4. ECSから動作確認

yum -y install redis

redis-cli -h r-1111111111111111.redis.japan.rds.aliyuncs.com -p 6379 -a 'password' 

ping
set hello world
get hello

 


-- 5. クリーンアップ


aliyun r-kvstore DescribeInstances 


aliyun r-kvstore DeleteInstance \
--InstanceId r-1111111111111111 

 


terraform destroy -auto-approve

 

 

 

 

シェルで数値を3桁ごとにカンマ区切り

(22)
https://genzouw.com/entry/2020/02/04/140039/1912/
https://dampgblog.hinohikari291.com/SedTestCommand/


echo 1234567890 | sed -E ':loop; s/^([0-9]+)([0-9]{3})/\1,\2/; t loop;';

(12)
https://genzouw.com/entry/2020/02/04/140039/1912/
https://dampgblog.hinohikari291.com/SedTestCommand/


echo 1234567890 | sed -E ':loop; s/^([0-9]+)([0-9]{3})/\1,\2/; t loop;';

(RL9)
https://genzouw.com/entry/2020/02/04/140039/1912/
https://dampgblog.hinohikari291.com/SedTestCommand/


echo 1234567890 | sed -E ':loop; s/^([0-9]+)([0-9]{3})/\1,\2/; t loop;';

 

 

(2022)
https://blog.powershell-from.jp/?p=214

 

(1234567890).ToString("#,#")

 

 

{Alibaba RDS} Create an ApsaraDB RDS for PostgreSQL instance

 

https://www.alibabacloud.com/help/en/rds/apsaradb-rds-for-postgresql/create-an-apsaradb-rds-for-postgresql-instance


0.11ドル/h


前提: 
コンソールでDB作成の手前まで実施して、下記メッセージに従い、SLR Authorize実行


The SLR authorization is not performed. 
To enable connections to your RDS instance, you must select SLR Authorization in the Terms of Service section.

After you perform this operation, a service-linked role is automatically created for you to use relevant features.
Role Name:AliyunServiceRoleForRdsPgsqlOnEcs
Role Policy:AliyunServiceRolePolicyForRdsPgsqlOnEcs
Permission Description:The role is used to establish network connections by binding elastic network interfaces (ENIs) to the server on which your ApsaraDB RDS for PostgreSQL instance resides.
References:For more information, see
Note: You are not charged for this operation.

 

-- 1. インスタンス作成

 


aliyun rds DescribeDBInstances

 


aliyun rds CreateDBInstance \
--DBInstanceClass pg.n2.2c.1m \
--DBInstanceNetType Intranet \
--DBInstanceStorage 20 \
--Engine PostgreSQL \
--EngineVersion 15.0 \
--PayType Postpaid \
--SecurityIPList "10.1.0.0/16" \
--Category Basic \
--ConnectionMode Standard \
--DBInstanceDescription instance01 \
--DBInstanceStorageType cloud_essd \
--DBIsIgnoreCase true \
--DBTimeZone "Asia/Tokyo" \
--DeletionProtection false \
--Port 5432 \
--StorageAutoScale Disable \
--InstanceNetworkType VPC \
--VPCId vpc-111111111111111111111 \
--VSwitchId vsw-111111111111111111111 \
--ZoneId ap-northeast-1a 


→ 10秒後、下記エラーになるが、インスタンスは作成される
ERROR( context deadline exceeded (Client.Timeout exceeded while awaiting headers))

 


-- 2. データベースアカウント作成


aliyun rds DescribeAccounts \
--DBInstanceId pgm-1111111111111111 


aliyun rds CreateAccount \
--DBInstanceId pgm-1111111111111111 \
--AccountName user01 \
--AccountPassword 'password' \
--AccountType Super 

 


-- 3. 接続確認

コンソールから接続確認

 


-- 4. クリーンアップ

aliyun rds DescribeAccounts \
--DBInstanceId pgm-1111111111111111 


aliyun rds DeleteAccount \
--DBInstanceId pgm-1111111111111111 \
--AccountName user01 

 


aliyun rds DescribeDBInstances


aliyun rds DeleteDBInstance \
--DBInstanceId pgm-1111111111111111