Облачная информация Лямбда-функция, переменные среды недоступны, ввод недоступен - PullRequest
0 голосов
/ 05 декабря 2018

Не уверен, где я делаю не так.Ниже мой лямбда-код и шаблон облачной информации.

Ниже представлена ​​моя лямбда-функция:

import os
import boto3


def quickstart_lambda_handler(event, context):
    print("event={}".format(event)) # nothing shows as k1:v1
    print(os.environ) # nothing show in output as var1
    print("environment variable var1: " + os.environ['var1'])

    json_str = "{\"a1\":\"b1\"}"
    bucket_name = "my-s3-bucket"
    file_name = "qs.json"
    s3_path = "cf-quickstart/" + file_name
    s3 = boto3.resource("s3")
    s3.Bucket(bucket_name).put_object(Key=s3_path, Body=json_str)

    print("object stored in s3")
    return s3_path

Мой шаблон формирования облака такой же, как и ниже для лямбда-функции и связанного с ней правила.

"QSLERole": {
  "Description" : "Quick Start Lambda Execution Role",
  "Type": "AWS::IAM::Role",
  "Properties": {
    "RoleName" : "QSLERole",
    "AssumeRolePolicyDocument": {
      "Version" : "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": [ "lambda.amazonaws.com" ]
          },
          "Action": [ "sts:AssumeRole" ]
        }]
    },
    "Path": "/",
    "Policies": [
      {
      "PolicyName": "root",
      "PolicyDocument": {
        "Version": "2012-10-17",
        "Statement": [{
          "Effect": "Allow",
          "Action": ["logs:*"],
          "Resource": "arn:aws:logs:*:*:*"
        },
        {
          "Effect": "Allow",
          "Action": "s3:PutObject",
          "Resource": "*"
        }
        ]
      }
    }]
  }
},
"QSLambdaF": {
  "Description" : "Quick Start Lambda Function",
  "Type": "AWS::Lambda::Function",
  "Properties": {
    "Code": {
      "S3Bucket": "my-s3-bucket",
      "S3Key": "generate-quickstartjson.zip"
    },
    "Handler": "generate-quickstartjson.quickstart_lambda_handler",
    "Runtime": "python2.7",
    "Timeout": "30",
    "Environment" : {
      "Variables" : {
        "var1" : "var1 value"
      }
    },
    "Role": {
      "Fn::GetAtt": [
        "QSLERole",
        "Arn"
      ]
    }
  }
},
"ScheduledRule": {
  "Description" :"Cloud Watch Quick Start Event Rule",
  "DependsOn" : [
    "QSLambdaF","EC2Instance"],
  "Type": "AWS::Events::Rule",
  "Properties" : {
    "Description" : "CloudWatch Event for generating output",
    "ScheduleExpression" : "rate(1 minute)",
    "State": "ENABLED",
    "Targets" : [
      {
        "Arn": { "Fn::GetAtt": [
          "QSLambdaF", "Arn"] },
        "Detail" : {
          "test" : "value"
        },
        "Input": "{\"k1\":\"v1\"}",
        "Id" : "QSScheduledRuleV1"
      }
    ]
  }
},
"PEILambda": {
  "Description" : "Permission For Events To Invoke Lambda Function",
  "Type": "AWS::Lambda::Permission",
  "Properties" : {
    "FunctionName": { "Ref": "QSLambdaF"},
    "Action": "lambda:InvokeFunction",
    "Principal": "events.amazonaws.com",
    "SourceArn": { "Fn::GetAtt": [
      "ScheduledRule", "Arn"] }
  }
},

--- создание экземпляра ec2ниже с группой безопасности

Доступны ни переменные окружения, ни поля ввода в лямбда-лямбда-выражениях.

"Input": "{\"k1\":\"v1\"}",

Пожалуйста, дайте мне знать, где я неправ.Спасибо за помощь.

1 Ответ

0 голосов
/ 05 декабря 2018

работает хорошо, как есть.Я использовал неправильный файл шаблона:))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...