像往常一样运行sls deploy -v && sls s3deploy
后,我遇到了这个问题:
...
CloudFormation - CREATE_FAILED - AWS::Logs::LogGroup - CallTextractLogGroup
...
CloudFormation - CREATE_FAILED - AWS::IAM::Role - IamRoleStateMachineExecution
CloudFormation - CREATE_FAILED - AWS::Logs::LogGroup - StartTextractStateMachineLogGroup
CloudFormation - CREATE_FAILED - AWS::Lambda::LayerVersion - Boto3LayerLambdaLayer
...
Serverless Error ---------------------------------------
An error occurred: StartTextractStateMachineLogGroup - /aws/lambda/textract-service-dev-startTextractStateMachine already exists.
Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Issues: forum.serverless.com
Your Environment Information ---------------------------
OS: linux
Node Version: 12.2.0
Serverless Version: 1.42.3
除了将Retry
部分添加到我的“步进功能状态”中,我根本不记得要进行任何更改,这些部分根本不会弄乱CF日志。
我尝试运行sls remove
,然后再次运行我的部署命令,但运气不好。
还尝试在YAML的cfLogs: true
部分中添加provider
,亲爱的!
我尝试在CloudWatch控制台中手动删除LogGroup,但是它甚至不存在。
这是我的serverless.yml:
service: textract-service
provider:
name: aws
runtime: python3.7
timeout: 10
region: us-east-1
cfLogs: true
environment:
STATE_MACHINE_ARN: ${self:resources.Outputs.TextractStepFunctions.Value}
iamRoleStatements:
- Effect: "Allow"
Action:
- "s3:PutObject"
- "states:*"
Resource:
Fn::Join:
- ""
- - "the-chumiest-bucket-ARN or *"
- ${self:resources.Outputs.TextractStepFunctions.Value}
plugins:
- serverless-plugin-existing-s3
- serverless-step-functions
- serverless-pseudo-parameters
- serverless-plugin-existing-s3
layers:
boto3Layer:
package:
artifact: boto3_layer.zip
allowedAccounts:
- "*"
functions:
startTextractStateMachine:
handler: src/start_textract_state_machine.lambda_handler
role: the-chumiest-bucket-role
layers:
- {Ref: Boto3LayerLambdaLayer}
events:
- existingS3:
bucket: the-chumiest-bucket
events:
- s3:ObjectCreated:*
rules:
- prefix: input1/
- suffix: .pdf
callTextract:
handler: src/call_textract.lambda_handler
role: the-chumiest-bucket-role
layers:
- {Ref: Boto3LayerLambdaLayer}
getTextractOutput:
handler: src/get_textract_output.lambda_handler
role: the-chumiest-bucket-role
layers:
- {Ref: Boto3LayerLambdaLayer}
parseTextractOutput:
handler: src/parse_textract_output.lambda_handler
role: the-chumiest-bucket-role
layers:
- {Ref: Boto3LayerLambdaLayer}
stepFunctions:
stateMachines:
textractStepFunc:
name: TextractStepFunctions
definition:
Comment: A state machine for the Textract OCR process.
StartAt: StartTextractStateMachine
States:
StartTextractStateMachine:
Type: Task
Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:#{AWS::StackName}-startTextractStateMachine"
Next: CallTextract
Retry:
- ErrorEquals:
- HandledError
IntervalSeconds: 1
MaxAttempts: 1
BackoffRate: 2
- ErrorEquals:
- States.ALL
IntervalSeconds: 1
MaxAttempts: 1
BackoffRate: 2
CallTextract:
Type: Task
Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:#{AWS::StackName}-callTextract"
Next: GetTextractOutput
Retry:
- ErrorEquals:
- HandledError
IntervalSeconds: 1
MaxAttempts: 1
BackoffRate: 2
- ErrorEquals:
- States.ALL
IntervalSeconds: 1
MaxAttempts: 1
BackoffRate: 2
GetTextractOutput:
Type: Task
Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:#{AWS::StackName}-getTextractOutput"
Next: ParseTextractOutput
Retry:
- ErrorEquals:
- HandledError
IntervalSeconds: 1
MaxAttempts: 1
BackoffRate: 2
- ErrorEquals:
- States.ALL
IntervalSeconds: 1
MaxAttempts: 1
BackoffRate: 2
ParseTextractOutput:
Type: Task
Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:#{AWS::StackName}-parseTextractOutput"
Retry:
- ErrorEquals:
- HandledError
IntervalSeconds: 1
MaxAttempts: 1
BackoffRate: 2
- ErrorEquals:
- States.ALL
IntervalSeconds: 1
MaxAttempts: 1
BackoffRate: 2
End: true
resources:
Outputs:
TextractStepFunctions:
Description: The ARN of the state machine
Value:
Ref: TextractStepFunctions
答案 0 :(得分:2)
要删除CloudWatch Log Group,请使用:
import { app, BrowserWindow } from 'electron';
....
....
app.disableHardwareAcceleration()
要显示所有可用的日志组,请使用:
aws logs delete-log-group --log-group-name foo/error_log
在AWS CLI中
答案 1 :(得分:1)
我用服务的重命名来实现这一点,只需要删除旧命名服务的CloudFormation堆栈即可。
答案 2 :(得分:0)
您似乎有一个先前组(失败?)中的日志组,该组仍然存在于CloudWatch Logs中。
您应该在CloudWatch控制台(不是CloudFormation)中看到此日志组。
您可以运行(AWS CLI):
aws delete-log-group --log-group-name /aws/lambda/textract-service-dev-startTextractStateMachine
删除您的日志组,然后重试部署。