-
Notifications
You must be signed in to change notification settings - Fork 0
/
demo.py
107 lines (92 loc) · 2.68 KB
/
demo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# -*- coding: utf-8 -*-
import moto
mock_list = [
moto.mock_sts,
moto.mock_s3,
moto.mock_stepfunctions,
]
for mock_aws in mock_list:
mock_aws().start()
import json
import random
from aws_resource_search.ui.boto_ses import bsm
from aws_resource_search.ui.main import run_ui
guid = "a1b2c3"
envs = ["sbx", "tst", "prd"]
projects = [
"infrastructure",
"machinelearning",
"businessreport",
]
def rand_env() -> str:
return random.choice(envs)
def rand_proj() -> str:
return random.choice(projects)
# print(bsm.aws_account_id)
# print(bsm.aws_region)
# s3 bucket
n = 30
for ith in range(1, 1 + n):
env = rand_env()
project = rand_proj()
bucket = f"i-{ith}-{env}-{guid}-{project}-s3-bucket"
bsm.s3_client.create_bucket(Bucket=bucket)
bsm.s3_client.put_bucket_policy(
Bucket=bucket,
Policy=json.dumps(
{
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [
{
"Sid": "DenyObjectsThatAreNotSSEKMS",
"Principal": "*",
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption-aws-kms-key-id": "true"
}
},
}
],
}
),
)
bsm.s3_client.put_bucket_tagging(
Bucket=bucket,
Tagging={
"TagSet": [
{"Key": "Environment", "Value": env},
{"Key": "Project", "Value": project},
]
},
)
# sfn state machine and execution
n = 30
for ith in range(1, 1 + n):
env = rand_env()
project = rand_proj()
name = f"i-{ith}-{env}-{guid}-{project}-sfn-state-machine"
res = bsm.sfn_client.create_state_machine(
name=name,
definition=json.dumps(
{
"Comment": "A description of my state machine",
"StartAt": "Pass",
"States": {"Pass": {"Type": "Pass", "End": True}},
}
),
roleArn="arn:aws:iam::123456789012:role/AWSStepFunctionsServiceRoleDefault",
type=random.choice(["STANDARD", "EXPRESS"]),
tags=[
{"key": "Environment", "value": env},
{"key": "Project", "value": project},
],
)
arn = res["stateMachineArn"]
for _ in range(3, 5):
bsm.sfn_client.start_execution(stateMachineArn=arn)
if __name__ == "__main__":
run_ui()