Skip to content

Commit c4c2066

Browse files
event notification file change
1 parent a27418a commit c4c2066

9 files changed

Lines changed: 69 additions & 57 deletions

structured-kb-demo/.env.example

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1-
ACCOUNT_ID=
1+
AWS_ACCOUNT_ID=
22
AWS_ACCESS_KEY_ID=
3+
AWS_REGION=
34
AWS_SECRET_ACCESS_KEY=
4-
BUCKET=
5-
CRAWLER_IAM_POLICY=
6-
CRAWLER_IAM_ROLE=
7-
CRAWLER=
8-
DB=
9-
FOLDER=
10-
QUEUE=
11-
REGION=
5+
6+
GLUE_CRAWLER=
7+
GLUE_CRAWLER_IAM_POLICY=
8+
GLUE_CRAWLER_IAM_ROLE=
9+
GLUE_DB=
10+
11+
REDSHIFT_IAM_ROLE=
12+
REDSHIFT_NAMESPACE=
13+
REDSHIFT_WORKGROUP=
14+
15+
S3_BUCKET=
16+
S3_BUCKET_FOLDER=
17+
18+
SQS_QUEUE=

structured-kb-demo/arns.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
from vars import (
2-
ACCOUNT_ID,
3-
BUCKET,
4-
CRAWLER_IAM_POLICY,
5-
CRAWLER_IAM_ROLE,
2+
AWS_ACCOUNT_ID,
3+
S3_BUCKET,
4+
GLUE_CRAWLER_IAM_POLICY,
5+
GLUE_CRAWLER_IAM_ROLE,
66
REDSHIFT_IAM_ROLE,
7-
REGION,
8-
QUEUE,
7+
AWS_REGION,
8+
SQS_QUEUE,
99
)
1010

1111
AWS_MANAGED_GLUE_IAM_POLICY_ARN = "arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole"
1212
AWS_MANAGED_REDSHIFT_IAM_POLICY_ARN = "arn:aws:iam::aws:policy/AmazonRedshiftAllCommandsFullAccess"
13-
BUCKET_ARN = f"arn:aws:s3:::{BUCKET}"
14-
CRAWLER_IAM_POLICY_ARN = f"arn:aws:iam::{ACCOUNT_ID}:policy/{CRAWLER_IAM_POLICY}"
15-
CRAWLER_IAM_ROLE_ARN = f"arn:aws:iam::{ACCOUNT_ID}:role/{CRAWLER_IAM_ROLE}"
16-
QUEUE_ARN = f"arn:aws:sqs:{REGION}:{ACCOUNT_ID}:{QUEUE}"
17-
REDSHIFT_IAM_ROLE_ARN = f"arn:aws:iam::{ACCOUNT_ID}:role/{REDSHIFT_IAM_ROLE}"
13+
S3_BUCKET_ARN = f"arn:aws:s3:::{S3_BUCKET}"
14+
GLUE_CRAWLER_IAM_POLICY_ARN = f"arn:aws:iam::{AWS_ACCOUNT_ID}:policy/{GLUE_CRAWLER_IAM_POLICY}"
15+
GLUE_CRAWLER_IAM_ROLE_ARN = f"arn:aws:iam::{AWS_ACCOUNT_ID}:role/{GLUE_CRAWLER_IAM_ROLE}"
16+
SQS_QUEUE_ARN = f"arn:aws:sqs:{AWS_REGION}:{AWS_ACCOUNT_ID}:{SQS_QUEUE}"
17+
REDSHIFT_IAM_ROLE_ARN = f"arn:aws:iam::{AWS_ACCOUNT_ID}:role/{REDSHIFT_IAM_ROLE}"

structured-kb-demo/setup_glue_crawler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import boto3
22

3-
from arns import CRAWLER_IAM_ROLE_ARN, QUEUE_ARN
3+
from arns import GLUE_CRAWLER_IAM_ROLE_ARN, QUEUE_ARN
44
from logger import logger
55
from vars import BUCKET, CRAWLER, DB, FOLDER
66

@@ -9,7 +9,7 @@
99
glue = boto3.client("glue", region_name="us-east-1")
1010

1111
CRAWLER_CONFIG = {
12-
"Role": CRAWLER_IAM_ROLE_ARN,
12+
"Role": GLUE_CRAWLER_IAM_ROLE_ARN,
1313
"DatabaseName": DB,
1414
"Description": "Crawler for inventory data triggered by SQS events",
1515
"Targets": {

structured-kb-demo/setup_glue_crawler_iam_policy.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import json
44

5-
from arns import BUCKET_ARN, CRAWLER_IAM_POLICY_ARN, QUEUE_ARN
5+
from arns import BUCKET_ARN, GLUE_CRAWLER_IAM_POLICY_ARN, QUEUE_ARN
66

77
from logger import logger
8-
from vars import CRAWLER_IAM_POLICY
8+
from vars import GLUE_CRAWLER_IAM_POLICY
99

1010
iam = boto3.client('iam')
1111

@@ -39,7 +39,7 @@
3939

4040
try:
4141
iam.create_policy(
42-
PolicyName=CRAWLER_IAM_POLICY,
42+
PolicyName=GLUE_CRAWLER_IAM_POLICY,
4343
PolicyDocument=json.dumps(policy_document),
4444
Description='Permissions for Glue Crawler to crawl S3 and use SQS Events'
4545
)
@@ -50,7 +50,7 @@
5050
try:
5151
# Create a new policy version
5252
iam.create_policy_version(
53-
PolicyArn=CRAWLER_IAM_POLICY_ARN,
53+
PolicyArn=GLUE_CRAWLER_IAM_POLICY_ARN,
5454
PolicyDocument=json.dumps(policy_document),
5555
SetAsDefault=True
5656
)

structured-kb-demo/setup_glue_crawler_iam_role.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import json
44

5-
from arns import AWS_MANAGED_GLUE_IAM_POLICY_ARN, CRAWLER_IAM_POLICY_ARN
5+
from arns import AWS_MANAGED_GLUE_IAM_POLICY_ARN, GLUE_CRAWLER_IAM_POLICY_ARN
66
from logger import logger
7-
from vars import ACCOUNT_ID, CRAWLER_IAM_ROLE
7+
from vars import ACCOUNT_ID, GLUE_CRAWLER_IAM_ROLE
88

99
iam = boto3.client("iam")
1010

@@ -28,7 +28,7 @@
2828

2929
try:
3030
iam.create_role(
31-
RoleName=CRAWLER_IAM_ROLE,
31+
RoleName=GLUE_CRAWLER_IAM_ROLE,
3232
AssumeRolePolicyDocument=json.dumps(trust_policy)
3333
)
3434
logger.info(f"Created role")
@@ -37,22 +37,22 @@
3737

3838

3939
# Get existing attached policies
40-
response = iam.list_attached_role_policies(RoleName=CRAWLER_IAM_ROLE)
40+
response = iam.list_attached_role_policies(RoleName=GLUE_CRAWLER_IAM_ROLE)
4141
attached_policies = [p['PolicyArn'] for p in response.get('AttachedPolicies', [])]
4242

4343
if AWS_MANAGED_GLUE_IAM_POLICY_ARN not in attached_policies:
4444
iam.attach_role_policy(
45-
RoleName=CRAWLER_IAM_ROLE,
45+
RoleName=GLUE_CRAWLER_IAM_ROLE,
4646
PolicyArn=AWS_MANAGED_GLUE_IAM_POLICY_ARN
4747
)
4848
logger.info("AWS Glue Service Role policy attached.")
4949
else:
5050
logger.info("AWS Glue Service Role policy already attached.")
5151

52-
if CRAWLER_IAM_POLICY_ARN not in attached_policies:
52+
if GLUE_CRAWLER_IAM_POLICY_ARN not in attached_policies:
5353
iam.attach_role_policy(
54-
RoleName=CRAWLER_IAM_ROLE,
55-
PolicyArn=CRAWLER_IAM_POLICY_ARN
54+
RoleName=GLUE_CRAWLER_IAM_ROLE,
55+
PolicyArn=GLUE_CRAWLER_IAM_POLICY_ARN
5656
)
5757
logger.info("Custom Glue Crawler policy attached.")
5858
else:

structured-kb-demo/setup_s3_bucket.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@
33
import boto3
44
from botocore.exceptions import ClientError
55

6-
from vars import BUCKET, REGION
6+
from vars import S3_BUCKET, AWS_REGION
77

8-
s3_client = boto3.client('s3', region_name=REGION)
8+
s3_client = boto3.client('s3', region_name=AWS_REGION)
99

1010
try:
11-
s3_client.head_bucket(Bucket=BUCKET)
12-
logger.info(f"Bucket already exists")
11+
s3_client.head_bucket(Bucket=S3_BUCKET)
12+
logger.info(f"Bucket {S3_BUCKET} already exists")
1313
except ClientError as e:
14-
logger.error(f"Error accessing bucket {BUCKET}: {e}")
14+
logger.error(f"Error accessing bucket {S3_BUCKET}: {e}")
1515
s3_client.create_bucket(
16-
Bucket=BUCKET
16+
Bucket=S3_BUCKET,
17+
CreateBucketConfiguration={'LocationConstraint': AWS_REGION}
1718
)
18-
logger.info(f"Bucket created successfully")
19+
logger.info(f"Bucket {S3_BUCKET} created successfully")
File renamed without changes.

structured-kb-demo/setup_sqs_queue.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import boto3
44

5-
from arns import BUCKET_ARN, QUEUE_ARN
5+
from arns import S3_BUCKET_ARN, SQS_QUEUE_ARN
66
from logger import logger
7-
from vars import QUEUE, REGION
7+
from vars import SQS_QUEUE, AWS_REGION
88

9-
sqs = boto3.client('sqs', region_name=REGION)
9+
sqs = boto3.client('sqs', region_name=AWS_REGION)
1010

1111
access_policy = {
1212
"Statement": [
@@ -16,10 +16,10 @@
1616
"Service": "s3.amazonaws.com"
1717
},
1818
"Action": "sqs:SendMessage",
19-
"Resource": QUEUE_ARN,
19+
"Resource": SQS_QUEUE_ARN,
2020
"Condition": {
2121
"ArnLike": {
22-
"aws:SourceArn": BUCKET_ARN
22+
"aws:SourceArn": S3_BUCKET_ARN
2323
}
2424
}
2525
}
@@ -28,12 +28,12 @@
2828

2929
try:
3030
# Check if queue exists
31-
sqs.get_queue_url(QueueName=QUEUE)
31+
sqs.get_queue_url(QueueName=SQS_QUEUE)
3232
logger.info(f"Queue already exists.")
3333
except sqs.exceptions.QueueDoesNotExist:
3434
# Create queue if it doesn't exist
3535
sqs.create_queue(
36-
QueueName=QUEUE,
36+
QueueName=SQS_QUEUE,
3737
Attributes={
3838
'Policy': json.dumps(access_policy)
3939
}

structured-kb-demo/vars.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from dotenv import load_dotenv
55

6+
67
@lru_cache(maxsize=1)
78
def _load_env_once() -> os._Environ[str]:
89
load_dotenv()
@@ -11,15 +12,18 @@ def _load_env_once() -> os._Environ[str]:
1112
# load all env vars at once as a dictionary
1213
env_vars = _load_env_once()
1314

14-
ACCOUNT_ID = env_vars["ACCOUNT_ID"]
15-
BUCKET = env_vars["BUCKET"]
16-
CRAWLER_IAM_POLICY = env_vars["CRAWLER_IAM_POLICY"]
17-
CRAWLER_IAM_ROLE = env_vars["CRAWLER_IAM_ROLE"]
18-
CRAWLER = env_vars["CRAWLER"]
19-
DB = env_vars["DB"]
20-
FOLDER = env_vars["FOLDER"]
21-
QUEUE = env_vars["QUEUE"]
15+
AWS_ACCOUNT_ID = env_vars["AWS_ACCOUNT_ID"]
16+
AWS_REGION = env_vars["AWS_REGION"]
17+
18+
GLUE_CRAWLER_IAM_POLICY = env_vars["GLUE_CRAWLER_IAM_POLICY"]
19+
GLUE_CRAWLER_IAM_ROLE = env_vars["GLUE_CRAWLER_IAM_ROLE"]
20+
GLUE_CRAWLER = env_vars["GLUE_CRAWLER"]
21+
GLUE_DB = env_vars["GLUE_DB"]
22+
23+
S3_BUCKET = env_vars["S3_BUCKET"]
24+
S3_BUCKET_FOLDER = env_vars["S3_BUCKET_FOLDER"]
25+
SQS_QUEUE = env_vars["SQS_QUEUE"]
26+
2227
REDSHIFT_IAM_ROLE = env_vars["REDSHIFT_IAM_ROLE"]
2328
REDSHIFT_NAMESPACE = env_vars["REDSHIFT_NAMESPACE"]
2429
REDSHIFT_WORKGROUP = env_vars["REDSHIFT_WORKGROUP"]
25-
REGION = env_vars["REGION"]

0 commit comments

Comments
 (0)