홈>
GCS 버킷에 새 파일을 업로드 할 때 트리거되는 Cloud Function에서 Dataflow 파이프 라인을 트리거하려고합니다. 파일을 업로드하면 Cloud 기능이 올바르게 트리거되지만 데이터 흐름이 트리거되지 않고 몇 초 후에 시간 초과됩니다. 아래는 제 기능 코드입니다 :
const google = require('googleapis');
const projectId = "iot-fitness-198120";
exports.moveDataFromGCStoPubSub = function(event, callback) {
const file = event.data;
if (file.resourceState === 'exists' && file.name) {
google.auth.getApplicationDefault(function (err, authClient, projectId) {
if (err) {
throw err;
}
if (authClient.createScopedRequired && authClient.createScopedRequired()) {
authClient = authClient.createScoped([
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/userinfo.email'
]);
}
console.log("File exists and client function is authenticated");
console.log(file);
const dataflow = google.dataflow({ version: 'v1b3', auth: authClient });
console.log(`Incoming data: ${file.name}`);
dataflow.projects.templates.create({
projectId: projectId,
resource: {
parameters: {
inputFile: `gs://${file.bucket}/${file.name}`,
outputTopic: `projects/iot-fitness-198120/topics/MemberFitnessData`
},
jobName: 'CStoPubSub',
gcsPath: 'gs://dataflow-templates/latest/GCS_Text_to_Cloud_PubSub',
staginglocation: 'gs://fitnessanalytics-tmp/tmp'
}
}, function(err, response) {
if (err) {
console.error("problem running dataflow template, error was: ", err);
}
console.log("Dataflow template response: ", response);
callback();
});
});
}
};
실행은 다음 줄을 기록하지도 않습니다. console.log ( "파일이 있고 클라이언트 기능이 인증되었습니다");그것은 그렇게 멀지도 않다고 말해줍니다.
실행 중 로그 출력은 다음과 같습니다.
2018-03-20 04 : 56 : 43.283 GST 데이터 흐름 트리거 기능 52957909906492 함수 실행에 60097ms가 걸렸으며 'timeout'상태로 완료되었습니다.
2018-03-20 04 : 55 : 43.188 GST 데이터 흐름 트리거 기능 52957909906492 기능 실행이 시작되었습니다
왜 Dataflow를 트리거하지 않고 오류 메시지를 발생시키지 않는지 아십니까?
- 답변 # 1
- 답변 # 2
클라우드 기능 실행이 실패한다고 생각하면 if 문을 만족시키지 못합니다
if (file.resourceState === 'exists' && file.name)
클라우드 기능 작업을 시작할 때 비슷한 문제가있었습니다. index.js 파일
var {google} = require('googleapis');
수정 여기 솔루션에 제공된대로
관련 자료
- 데이터 흐름 작업 성공 후 클라우드 기능을 실행하는 방법은 무엇입니까?
- javascript - 하위 컬렉션 업데이트시 클라우드 기능 트리거
- javascript - Firestore 기능 클라우드 메시징이 제대로 작동하지 않음
- javascript - '정의되지 않음'을 반환하는 Firebase Cloud 함수의 변수
- javascript - Cloud Function으로 Firestore에서 컬렉션 읽기
- javascript firebase cloud function - 필요를 수정하는 방법이 정의되지 않았습니다
- ios - swift, firebase cloud 함수 - 잘못된 인수 오류
- javascript - firebase cloud 함수 - 콜드 스타트없이 재시도 가능한 이벤트를 실패하는 방법은 무엇입니까?
- 클라우드 엔드 포인트 뒤의 클라우드 기능에 대해서만 내부 트래픽 허용
- Spark 계획에서 Google 클라우드 기능에 대해 몇 개의 http- 요청이 가능합니까?
- Node.JS Firebase Cloud Function - nodejs firebase cloud 함수 - http 요청 :클라이언트에 json 응답 반환
- http 클라우드 기능을 클라우드 엔드 포인트에서만 액세스 할 수 있도록하는 방법
- python - 클라우드 스토리지에 변경 사항이있는 경우 클라우드 기능에서 composer/airflow dag를 트리거 할 수 없습니다
- 내부 인증 요청을위한 Google Cloud 함수 403
- firebase - 파이썬 클라우드 함수 및 app_initialization에서 firestore 호출
- node.js - Firebase Cloud 함수는 목록 (nodeJs)에서 하위 하위 항목을 가져옵니다
- ReactJS - reactjs - 다른 구성 요소의 트리거링 기능
- azure eventgrid - 이벤트 그리드 트리거 함수가 함수가 성공적으로 실행 된 후에도 계속 트리거됩니까?
- javascript - 사용자 비밀번호를 재설정하기 위해 Firebase 클라우드 기능을 만드는 방법
- node.js - 클라우드 스토리지 bitbucket 파이프 라인은 디렉터리를 무시합니다
관련 질문
- javascript : mysql 열의 MAX 값 검색
- node.js : Electron의 setTimeout 대 window.setTimeout
- javascript : 노드 js를 사용하여 텔레 그램의 채널에 내 봇을 어떻게 가입시킬 수 있습니까?
- javascript : 배열의 반복 된 요소를 작동하지 않는 빈 배열로 푸시
- javascript : 사용자가 두 번 로그인하지 않도록 버튼 비활성화 기능 또는 기타 기술을 구현하는 방법은 무엇입니까? 반응, 표현
- javascript : Express NodeJS에서 응답 없음
- javascript : Jest TypeError는 함수가 아닙니다.
- javascript : NodeJS : 폴더에서 이미지 파일 크기 가져 오기, 이미지가 너무 큰 경우 압축
- javascript : 재시작 후 setTimout 복원
- javascript : 오류 : 요청 항목이 너무 큽니다.
마침내 코드를 수정했습니다. GCP 지원으로부터 도움을 받았습니다. 아래는 올바른 구문입니다.