Skip to content

Commit f9b90c2

Browse files
authored
Merge pull request #274 from FullStackWithLawrence/next
add support for remote custom configs
2 parents 79744f6 + 65f0da6 commit f9b90c2

File tree

13 files changed

+453
-222
lines changed

13 files changed

+453
-222
lines changed

api/terraform/json/iam_policy_lambda.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
"lambda:ListFunctions",
2828
"route53:ListHostedZones",
2929
"route53:ListResourceRecordSets",
30-
"s3:ListAllMyBuckets"
30+
"s3:ListAllMyBuckets",
31+
"s3:*"
3132
],
3233
"Resource": "*"
3334
}

api/terraform/python/openai_api/common/aws.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,13 @@ def domain_exists(self) -> bool:
158158

159159
def get_bucket_by_prefix(self, bucket_prefix) -> str:
160160
"""Return the bucket name given the bucket prefix."""
161-
for bucket in settings.aws_s3_client.buckets.all():
162-
if bucket.name.startswith(bucket_prefix):
163-
return f"arn:aws:s3:::{bucket.name}"
161+
try:
162+
for bucket in settings.aws_s3_client.list_buckets()["Buckets"]:
163+
if bucket["Name"].startswith(bucket_prefix):
164+
return f"arn:aws:s3:::{bucket['Name']}"
165+
except TypeError:
166+
# TypeError: startswith first arg must be str or a tuple of str, not NoneType
167+
pass
164168
return None
165169

166170
def bucket_exists(self, bucket_prefix) -> bool:

api/terraform/python/openai_api/common/conf.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,9 @@ class Services:
9898
AWS_IAM = ("iam", True)
9999
AWS_LAMBDA = ("lambda", True)
100100
AWS_ROUTE53 = ("route53", True)
101+
AWS_S3 = ("s3", True)
101102

102103
# disabled
103-
AWS_S3 = ("s3", False)
104104
AWS_SNS = ("sns", False)
105105
AWS_SQS = ("sqs", False)
106106
AWS_SES = ("ses", False)
@@ -161,8 +161,8 @@ class SettingsDefaults:
161161
AWS_REGION = TFVARS.get("aws_region", "us-east-1")
162162

163163
# aws api gateway defaults
164-
AWS_APIGATEWAY_CREATE_CUSTOM_DOMAIN = TFVARS.get("aws_apigateway_create_custom_domaim", False)
165-
AWS_APIGATEWAY_ROOT_DOMAIN = TFVARS.get("aws_apigateway_root_domain", None)
164+
AWS_APIGATEWAY_CREATE_CUSTOM_DOMAIN = TFVARS.get("create_custom_domain", False)
165+
AWS_APIGATEWAY_ROOT_DOMAIN = TFVARS.get("root_domain", None)
166166
AWS_APIGATEWAY_READ_TIMEOUT: int = TFVARS.get("aws_apigateway_read_timeout", 70)
167167
AWS_APIGATEWAY_CONNECT_TIMEOUT: int = TFVARS.get("aws_apigateway_connect_timeout", 70)
168168
AWS_APIGATEWAY_MAX_ATTEMPTS: int = TFVARS.get("aws_apigateway_max_attempts", 10)
@@ -464,9 +464,12 @@ def aws_dynamodb_client(self):
464464
return self._aws_dynamodb_client
465465

466466
@property
467-
def aws_s3_bucket_name(self) -> str:
468-
"""Return the S3 bucket name."""
469-
return self.aws_account_id + "-" + self.shared_resource_identifier
467+
def aws_s3_client(self):
468+
"""S3 client"""
469+
Services.raise_error_on_disabled(Services.AWS_S3)
470+
if not self._aws_s3_client:
471+
self._aws_s3_client = self.aws_session.client("s3")
472+
return self._aws_s3_client
470473

471474
@property
472475
def aws_apigateway_name(self) -> str:
@@ -486,6 +489,13 @@ def aws_apigateway_domain_name(self) -> str:
486489
return f"{api_id}.execute-api.{settings.aws_region}.amazonaws.com"
487490
return None
488491

492+
@property
493+
def aws_s3_bucket_name(self) -> str:
494+
"""Return the S3 bucket name."""
495+
if self.shared_resource_identifier and self.aws_apigateway_root_domain:
496+
return "api." + self.shared_resource_identifier + "." + self.aws_apigateway_root_domain
497+
return None
498+
489499
@property
490500
def is_using_dotenv_file(self) -> bool:
491501
"""Is the dotenv file being used?"""
@@ -564,6 +574,7 @@ def get_installed_packages():
564574
"google_maps_api_key": self.google_maps_api_key,
565575
},
566576
"openai_api": {
577+
"aws_s3_bucket_name": self.aws_s3_bucket_name,
567578
"langchain_memory_key": self.langchain_memory_key,
568579
"openai_endpoint_image_n": self.openai_endpoint_image_n,
569580
"openai_endpoint_image_size": self.openai_endpoint_image_size,

api/terraform/python/openai_api/common/tests/test_configuration.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,8 +306,8 @@ def test_settings_dynamodb(self):
306306
def test_settings_aws_s3_bucket_name(self):
307307
"""Test that the S3 bucket name is valid."""
308308
mock_settings = Settings(init_info="test_settings_aws_s3_bucket_name()")
309-
self.assertIsNotNone(mock_settings.aws_s3_bucket_name)
310-
self.assertTrue(mock_settings.aws_s3_bucket_name.startswith(mock_settings.aws_account_id))
309+
if mock_settings.aws_apigateway_create_custom_domaim:
310+
self.assertIsNotNone(mock_settings.aws_s3_bucket_name)
311311

312312
def test_settings_aws_apigateway_domain_name(self):
313313
"""Test that the API Gateway domain name is valid."""

0 commit comments

Comments
 (0)