2017-01-26 3 views
0

Я создаю шаблон облачной информации, который создает стек, слои и приложения. Приложения имеют конфигурацию базы данных, как Datasources:Использование customResource для регистрации уровня RDS для стека opsworks

"AdminApp": { 
     "Type": "AWS::OpsWorks::App", 
     "Properties": { 
     "AppSource" : { 
      "Type" : "git", 
      "Url" : "git://github.com:myrepo/adminapp.git", 
      "Revision" : "master" 
     }, 
     "DataSources":[{ 
      "Arn" : { "Ref" : "RegisterRDStoStack" }, 
      "DatabaseName" : "fadmin", 
      "Type" : "RdsDbInstance" 
     }], 
     "Description": "Administration", 
     "Name" : "admin-api", 
     "Shortname" : "admin_api", 
     "StackId" : {"Ref": "Stack"}, 
     "Type" : "php" 
     } 
    }, 

База в DataSources собственности sould быть зарегистрирован первым в стек, так что приложения могут иметь доступ к нему. Как AWS не реализовали еще создание слоя RDS в opsworks стека с помощью CloudFormation, поэтому я создал CustomResource как обходной путь:

"RegisterRDStoStack" : { 
    "Type": "Custom::RDSLayer", 
    "Version" : "1.0", 
    "Properties" : { 
    "ServiceToken": {"Ref" : "RDSInstanceARN"}, 
    "StackId" : {"Ref" : "Stack" }, 
    "User" : {"Ref" : "UserDB" }, 
    "Password" : {"Ref" : "PasswordDB" } 
    } 
}, 

При тестировании шаблона я получаю эту ошибку:

CREATE_FAILED Custom::RDSLayer RegisterRDStoStack Invalid service token 

Похоже, что есть ошибка, но не знаю, что именно. Я правильно предоставил ARN базы данных. Что я должен сделать, чтобы сделать эту работу, пожалуйста? Есть идеи ?

ответ

0

Необходимо указать ARN функции лямбда (например, {"Ref": "MyLambdaFunction"}) в качестве параметра ServiceToken для Custom Resource. Обратитесь к документации по ServiceToken:

Токен службы, которая была дана разработчику шаблона поставщика услуг для доступа к услуге, такие как тема ARN Amazon SNS или лямбда-функция ARN. Маркер службы должен быть из того же региона, в котором вы создаете стек.

+0

который лямбда функция? Сделать что? – JavaQueen

+0

@Cloudgls Функция Lambda, содержащая настраиваемую логику инициализации, которую вы хотите вызвать из своего пользовательского ресурса. Чтобы делать то, что вы хотите делать с вашим пользовательским ресурсом. – wjordan

+0

gotcha, спасибо – JavaQueen

Смежные вопросы