#amazon-web-services #aws-lambda #amazon-route53 #aws-sam
Вопрос:
Я перенес API Джерси в Cloudformation (используя AWS SAM), и он правильно работает с доменом amazonaws… доступен, как https://xxxxx.execute-api.us-east-1.amazonaws.com/Stage/endpoint
Теперь мне нужно иметь доступ к нему с помощью моего собственного домена, например https://api.mydomain.com/endpoint
.
Я настроил сертификат в Диспетчере сертификатов (api.mydomain.com) и добавил запись CNAME в мою зону размещения route53. Затем я просто добавил этот раздел в свой файл YML:
Api:
EndpointConfiguration: REGIONAL
Domain:
DomainName: api.mydomain.com
CertificateArn: arn:aws:acm:us-east-1:XXXXXXXX:certificate/bbbbbb-bbbb-bbbb-bbbb-bbbbbbbb
Это мой YML с этим разделом:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: AWS Serverless Jersey API - com.mydomain::mydomain
Globals:
Function:
Environment:
Variables:
•••
Api:
EndpointConfiguration: REGIONAL
Domain:
DomainName: api.mydomain.com
CertificateArn: arn:aws:acm:us-east-1:XXXXXXXX:certificate/bbbbbb-bbbb-bbbb-bbbb-bbbbbbbb
Resources:
MyServiceFunction:
Type: AWS::Serverless::Function
Properties:
Handler: com.mydomain.app.StreamLambdaHandler::handleRequest
Runtime: java8
CodeUri: .
MemorySize: 512
Policies: AWSLambdaBasicExecutionRole
Timeout: 30
Events:
ProxyResource:
Type: Api
Properties:
Path: /{proxy }
Method: any
Policies:
•••
Outputs:
MyServiceApi:
Description: URL for application
Value: !Sub 'https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Stage/endpoint'
Export:
Name: MyServiceApi
Это просто не работает с моим пользовательским доменом. Запрошенный URL-адрес недоступен. Пожалуйста, помогите 🙁
Ответ №1:
Хорошо, наконец-то я решил проблему с помощью этих шагов
- Создайте сертификат в Диспетчере сертификатов с необходимым URL-адресом: api.mydomain.com
- Добавьте созданное имя домена и имя сертификата в файл yml
- Перейдите в Шлюз API->Пользовательские доменные имена> и выберите домен. Затем из конфигураций скопируйте доменное имя шлюза API
- Перейдите в Route53 и добавьте запись A с доменом api.mydomain.com со значением доменного имени шлюза API